Table of Contents
1. General Installation Considerations
- 2. Installation on Mac OS X
+ 2. Installation on Unix systems
- Using Packages
- Compiling for OS X Server
- Compiling for MacOS X Client
-
- 3. Installation on Unix systems
-
- Gentoo installation notes
- HP-UX specific installation notes
- OpenBSD installation notes
- Solaris specific installation tips
Apache 1.3.x on Unix systems
Apache 2.0 on Unix systems
Caudium
fhttpd related notes
Sun, iPlanet and Netscape servers on Sun Solaris
CGI and commandline setups
+ HP-UX specific installation notes
+ OpenBSD installation notes
+ Solaris specific installation tips
+ Gentoo installation notes
+
+ 3. Installation on Mac OS X
+
+ Using Packages
+ Compiling for OS X Server
+ Compiling for MacOS X Client
+
+ 4. Installation of PECL extensions
+
+ Introduction to PECL Installations
+ Downloading PECL extensions
+ PECL for Windows users
+ Compiling shared PECL extensions with PEAR
+ Compiling shared PECL extensions with phpize
+ Compiling PECL extensions statically into PHP
- 4. Problems?
+ 5. Problems?
Read the FAQ
Other problems
Bug reports
- 5. Runtime Configuration
+ 6. Runtime Configuration
The configuration file
How to change configuration settings
nearest to you for downloading the distributions.
_________________________________________________________________
-Chapter 2. Installation on Mac OS X
-
- This section contains notes and hints specific to installing PHP on
- Mac OS X. There are two slightly different versions of Mac OS X,
- Client and Server, our manual deals with installing PHP on both
- systems. Note that PHP is not available for MacOS 9 and earlier
- versions.
- _________________________________________________________________
-
-Using Packages
-
- There are a few pre-packaged and pre-compiled versions of PHP for Mac
- OS X. This can help in setting up a standard configuration, but if you
- need to have a different set of features (such as a secure server, or
- a different database driver), you may need to build PHP and/or your
- web server yourself. If you are unfamiliar with building and compiling
- your own software, it's worth checking whether somebody has already
- built a packaged version of PHP with the features you need.
- _________________________________________________________________
-
-Compiling for OS X Server
-
- Mac OS X Server install.
-
- 1. Get the latest distributions of Apache and PHP.
- 2. Untar them, and run the configure program on Apache like so.
-
-./configure --exec-prefix=/usr \
---localstatedir=/var \
---mandir=/usr/share/man \
---libexecdir=/System/Library/Apache/Modules \
---iconsdir=/System/Library/Apache/Icons \
---includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \
---enable-shared=max \
---enable-module=most \
---target=apache
-
- 3. If you want the compiler to do some optimization, you may also
- want to add this line:
-
-setenv OPTIM=-O2
-
- 4. Next, go to the PHP 4 source directory and configure it.
-
-./configure --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/share/man \
- --with-xml \
- --with-apache=/src/apache_1.3.12
-
- If you have any other additions (MySQL, GD, etc.), be sure to add
- them here. For the --with-apache string, put in the path to your
- apache source directory, for example /src/apache_1.3.12.
- 5. Type make and make install. This will add a directory to your
- Apache source directory under src/modules/php4.
- 6. Now, reconfigure Apache to build in PHP 4.
-
-./configure --exec-prefix=/usr \
---localstatedir=/var \
---mandir=/usr/share/man \
---libexecdir=/System/Library/Apache/Modules \
---iconsdir=/System/Library/Apache/Icons \
---includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \
---enable-shared=max \
---enable-module=most \
---target=apache \
---activate-module=src/modules/php4/libphp4.a
-
- You may get a message telling you that libmodphp4.a is out of
- date. If so, go to the src/modules/php4 directory inside your
- Apache source directory and run this command: ranlib libmodphp4.a.
- Then go back to the root of the Apache source directory and run
- the above configure command again. That'll bring the link table up
- to date. Run make and make install again.
- 7. Copy and rename the php.ini-dist file to your bin directory from
- your PHP 4 source directory: cp php.ini-dist
- /usr/local/bin/php.ini or (if your don't have a local directory)
- cp php.ini-dist /usr/bin/php.ini.
- _________________________________________________________________
-
-Compiling for MacOS X Client
-
- The following instructions will help you install a PHP module for the
- Apache web server included in MacOS X. This version includes support
- for the MySQL and PostgreSQL databases. These instructions are
- graciously provided by Marc Liyanage.
-
- Warning
-
- Be careful when you do this, you could screw up your Apache web
- server!
-
- Do this to install:
-
- 1. Open a terminal window.
- 2. Type wget
- http://www.diax.ch/users/liyanage/software/macosx/libphp4.so.gz,
- wait for the download to finish.
- 3. Type gunzip libphp4.so.gz.
- 4. Type sudo apxs -i -a -n php4 libphp4.so
- 5. Now type sudo open -a TextEdit /etc/httpd/httpd.conf. TextEdit
- will open with the web server configuration file. Locate these two
- lines towards the end of the file: (Use the Find command)
-
-#AddType application/x-httpd-php .php
-#AddType application/x-httpd-php-source .phps
-
- Remove the two hash marks (#), then save the file and quit
- TextEdit.
- 6. Finally, type sudo apachectl graceful to restart the web server.
-
- PHP should now be up and running. You can test it by dropping a file
- into your Sites folder which is called test.php. Into that file, write
- this line: <?php phpinfo() ?>.
-
- Now open up 127.0.0.1/~your_username/test.php in your web browser. You
- should see a status table with information about the PHP module.
- _________________________________________________________________
-
-Chapter 3. Installation on Unix systems
+Chapter 2. Installation on Unix systems
This section will guide you through the general configuration and
installation of PHP on Unix systems. Be sure to investigate any
* Basic Unix skills (being able to operate "make" and a C compiler)
* An ANSI C compiler
- * flex
- * bison
+ * flex: Version 2.5.4
+ * bison: Version 1.28 (preferred), 1.35, or 1.75
* A web server
* Any module specific components (such as gd, pdf libs, etc.)
The initial PHP setup and configuration process is controlled by the
- use of the commandline options of the configure script. Our manual
- documents the different options separately. You will find the core
- options in the appendix, while the different extension specific
- options are descibed on the reference pages.
+ use of the commandline options of the configure script. You could get
+ a list of all available options along with short explanations running
+ ./configure --help. Our manual documents the different options
+ separately. You will find the core options in the appendix, while the
+ different extension specific options are descibed on the reference
+ pages.
When PHP is configured, you are ready to build the module and/or
executables. The command make should take care of this. If it fails
and you can't figure out why, see the Problems section.
_________________________________________________________________
-Gentoo installation notes
+Apache 1.3.x on Unix systems
- This section contains notes and hints specific to installing PHP on
- Gentoo Linux.
- _________________________________________________________________
+ This section contains notes and hints specific to Apache installs of
+ PHP on Unix platforms. We also have instructions and notes for Apache
+ 2 on a separate page.
-Using Portage (emerge)
+ You can select arguments to add to the configure on line 10 below from
+ the list of core configure options and from extension specific options
+ described at the respective places in the manual. The version numbers
+ have been omitted here, to ensure the instructions are not incorrect.
+ You will need to replace the 'xxx' here with the correct values from
+ your files.
- While you can just download the PHP source and compile it youself,
- using Gentoo's packaging system is the simplest and cleanest method of
- installing PHP. If you are not familiar with building software on
- Linux, this is the way to go.
+ Example 2-1. Installation Instructions (Apache Shared Module Version)
+ for PHP
+1. gunzip apache_xxx.tar.gz
+2. tar -xvf apache_xxx.tar
+3. gunzip php-xxx.tar.gz
+4. tar -xvf php-xxx.tar
+5. cd apache_xxx
+6. ./configure --prefix=/www --enable-module=so
+7. make
+8. make install
+9. cd ../php-xxx
- If you have built your Gentoo system so far, you are probably used to
- Portage already. Installing Apache and PHP is no different than the
- other system tools.
+10. Now, configure your PHP. This is where you customize your PHP
+ with various options, like which extensions will be enabled. Do a
+ ./configure --help for a list of available options. In our example
+ we'll do a simple configure with Apache 1 and MySQL support. Your
+ path to apxs may differ from our example.
- The first decision you need to make is whether you want to install
- Apache 1.3.x or Apache 2.x. While both can be used with PHP, the steps
- given bellow will use Apache 1.3.x. Another thing to consider is
- whether your local Portage tree is up to date. If you have not updated
- it recently, you need to run emerge sync before anything else. This
- way, you will be using the most recent stable version of Apache and
- PHP.
+ ./configure --with-mysql --with-apxs=/www/bin/apxs
- Now that everything is in place, you can use the following example to
- install Apache and PHP:
+11. make
+12. make install
- Example 3-1. Gentoo Install Example with Apache 1.3
-# emerge \<apache-2
-# USE="-*" emerge php mod_php
-# ebuild /var/db/pkg/dev-php/mod_php-<your PHP version>/mod_php-<your PHP versi
-on>.ebuild config
-# nano /etc/conf.d/apache
- Add "-D PHP4" to APACHE_OPTS
+ If you decide to change your configure options after installation,
+ you only need to repeat the last three steps. You only need to
+ restart apache for the new module to take effect. A recompile of
+ Apache is not needed.
-# rc-update add apache default
-# /etc/init.d/apache start
+ Note that unless told otherwise, 'make install' will also install PEAR,
+ various PHP tools such as phpize, install the PHP CLI, and more.
- You can read more about emerge in the excellent Portage Manual
- provided on the Gentoo website.
+13. Setup your php.ini file:
- If you need to use Apache 2, you can simply use emerge apache in the
- last example.
- _________________________________________________________________
+ cp php.ini-dist /usr/local/lib/php.ini
-Better control on configuration
+ You may edit your .ini file to set PHP options. If you prefer your
+ php.ini in another location, use --with-config-file-path=/some/path in
+ step 10.
- In the last section, PHP was emerged without any activated modules. As
- of this writing, the only module activated by default with Portage is
- XML which is needed by PEAR. This may not be what you want and you
- will soon discover that you need more activated modules, like MySQL,
- gettext, GD, etc.
+ If you instead choose php.ini-recommended, be certain to read the list
+ of changes within, as they affect how PHP behaves.
- When you compile PHP from source yourself, you need to activate
- modules via the configure command. With Gentoo, you can simply provide
- USE flags which will be passed to the configure script automatically.
- To see which USE flags to use with emerge, you can try:
+14. Edit your httpd.conf to load the PHP module. The path on the right hand
+ side of the LoadModule statement must point to the path of the PHP
+ module on your system. The make install from above may have already
+ added this for you, but be sure to check.
- Example 3-2. Getting the list of valid USE flags
-# USE="-*" emerge -pv php
+ For PHP 4:
-[ebuild N ] dev-php/php-4.3.6-r1 -X -berkdb -crypt -curl -debug -doc
--fdftk -firebird -flash -freetds -gd -gd-external -gdbm -gmp -hardenedphp
--imap -informix -ipv6 -java -jpeg -kerberos -ldap -mcal -memlimit -mssql
--mysql -ncurses -nls -oci8 -odbc -pam -pdflib -png -postgres -qt -readline
--snmp -spell -ssl -tiff -truetype -xml2 -yaz 3,876 kB
+ LoadModule php4_module libexec/libphp4.so
- As you can see from the last output, PHP considers a lot of USE flags.
- Look at them closely and choose what you need. If you choose a flag
- and you do not have the proper librairies, Portage will compile them
- for you. It is a good idea to use emerge -pv again to see what Portage
- will compile in accordance to your USE flags. As an example, if you do
- not have X installed and you choose to include X in the USE flags,
- Portage will compile X prior to PHP, which can take a couple of hours.
+ For PHP 5:
- If you choose to compile PHP with MySQL, cURL and GD support, the
- command will look something like this:
+ LoadModule php5_module libexec/libphp5.so
- Example 3-3. Install PHP with USE flags
- # USE="-* curl mysql gd" emerge php mod_php
+15. And in the AddModule section of httpd.conf, somewhere under the
+ ClearModuleList, add this:
- As in the last example, do not forget to emerge php as well as
- mod_php. php is responsible for the command line version of PHP as
- mod_php is for the Apache module version of PHP.
- _________________________________________________________________
+ For PHP 4:
-Common Problems
+ AddModule mod_php4.c
- * If you see the PHP source instead of the result the script should
- produce, you have probably forgot to edit /etc/conf.d/apache.
- Apache needs to be started with the -D PHP4 flag. To see if the
- flag is present, you should be able to see it when using ps ax |
- grep apache while Apache is running.
- * Due to slotting problems, you might end up with more than one
- version of PHP installed on your system. If this is the case, you
- need to unmerge the old versions manually by using emerge unmerge
- mod_php-<old version>.
- * If you cannot emerge PHP because of Java, try putting -* in front
- of your USE flags like in the above examples.
- * If you are having problems configuring Apache and PHP, you can
- always search the Gentoo Forums. Try searching with the keywords
- "Apache PHP".
- _________________________________________________________________
+ For PHP 5:
-HP-UX specific installation notes
+ AddModule mod_php5.c
- This section contains notes and hints specific to installing PHP on
- HP-UX systems. (Contributed by paul_mckay at clearwater-it dot co dot
- uk).
+16. Tell Apache to parse certain extensions as PHP. For example,
+ let's have Apache parse the .php extension as PHP. You could
+ have any extension(s) parse as PHP by simply adding more, with
+ each separated by a space. We'll add .phtml to demonstrate.
- Note: These tips were written for PHP 4.0.4 and Apache 1.3.9.
+ AddType application/x-httpd-php .php .phtml
- 1. You need gzip, download a binary distribution from
- http://hpux.connect.org.uk/ftp/hpux/Gnu/gzip-1.2.4a/gzip-1.2.4a-sd
- -10.20.depot.Z uncompress the file and install using swinstall.
- 2. You need gcc, download a binary distribution from
- http://gatekeep.cs.utah.edu/ftp/hpux/Gnu/gcc-2.95.2/gcc-2.95.2-sd-
- 10.20.depot.gz. uncompress this file and install gcc using
- swinstall.
- 3. You need the GNU binutils, you can download a binary distribution
- from
- http://hpux.connect.org.uk/ftp/hpux/Gnu/binutils-2.9.1/binutils-2.
- 9.1-sd-10.20.depot.gz. uncompress this file and install binutils
- using swinstall.
- 4. You now need bison, you can download a binary distribution from
- http://hpux.connect.org.uk/ftp/hpux/Gnu/bison-1.28/bison-1.28-sd-1
- 0.20.depot.gz, install as above.
- 5. You now need flex, you need to download the source from one of the
- http://www.gnu.org mirrors. It is in the non-gnu directory of the
- ftp site. Download the file, gunzip, then tar -xvf it. Go into the
- newly created flex directory and run ./configure, followed by
- make, and then make install.
- If you have errors here, it's probably because gcc etc. are not in
- your PATH so add them to your PATH.
- 6. Download the PHP and apache sources.
- 7. gunzip and tar -xvf them. We need to hack a couple of files so
- that they can compile OK.
- 8. Firstly the configure file needs to be hacked because it seems to
- lose track of the fact that you are a hpux machine, there will be
- a better way of doing this but a cheap and cheerful hack is to put
- lt_target=hpux10.20 on line 47286 of the configure script.
- 9. Next, the Apache GuessOS file needs to be hacked. Under
- apache_1.3.9/src/helpers change line 89 from echo
- "hp${HPUXMACH}-hpux${HPUXVER}"; exit 0 to: echo
- "hp${HPUXMACH}-hp-hpux${HPUXVER}"; exit 0
- 10. You cannot install PHP as a shared object under HP-UX so you must
- compile it as a static, just follow the instructions at the Apache
- page.
- 11. PHP and Apache should have compiled OK, but Apache won't start.
- you need to create a new user for Apache, e.g. www, or apache. You
- then change lines 252 and 253 of the conf/httpd.conf in Apache so
- that instead of
+ It's also common to setup the .phps extension to show highlighted PHP
+ source, this can be done with:
-User nobody
-Group nogroup
+ AddType application/x-httpd-php-source .phps
- you have something like
+17. Use your normal procedure for starting the Apache server. (You must
+ stop and restart the server, not just cause the server to reload by
+ using a HUP or USR1 signal.)
-User www
-Group sys
+ Alternatively, to install PHP as a static object:
- This is because you can't run Apache as nobody under hp-ux. Apache
- and PHP should then work.
- _________________________________________________________________
+ Example 2-2. Installation Instructions (Static Module Installation for
+ Apache) for PHP
+1. gunzip -c apache_1.3.x.tar.gz | tar xf -
+2. cd apache_1.3.x
+3. ./configure
+4. cd ..
-OpenBSD installation notes
+5. gunzip -c php-4.x.y.tar.gz | tar xf -
+6. cd php-4.x.y
+7. ./configure --with-mysql --with-apache=../apache_1.3.x
+8. make
+9. make install
- This section contains notes and hints specific to installing PHP on
- OpenBSD 3.4.
- _________________________________________________________________
+10. cd ../apache_1.3.x
-Using Binary Packages
+11. ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a
+ (The above line is correct! Yes, we know libphp4.a does not exist at this
+ stage. It isn't supposed to. It will be created.)
- Using binary packages to install PHP on OpenBSD is the recommended and
- simplest method. The core package has been separated from the various
- modules, and each can be installed and removed independently from the
- others. The files you need can be found on your OpenBSD CD or on the
- FTP site.
+12. make
+ (you should now have an httpd binary which you can copy to your Apache bin
+dir if
+ is is your first install then you need to "make install" as well)
- The main package you need to install is php4-core-4.3.3.tgz, which
- contains the basic engine (plus gettext and iconv). Next, take a look
- at the module packages, such as php4-mysql-4.3.3.tgz or
- php4-imap-4.3.3.tgz. You need to use the phpxs command to activate and
- deactivate these modules in your php.ini.
+13. cd ../php-4.x.y
+14. cp php.ini-dist /usr/local/lib/php.ini
- Example 3-4. OpenBSD Package Install Example
-# pkg_add php4-core-4.3.3.tgz
-# /usr/local/sbin/phpxs -s
-# cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini
- (add in mysql)
-# pkg_add php4-mysql-4.3.3.tgz
-# /usr/local/sbin/phpxs -a mysql
- (add in imap)
-# pkg_add php4-imap-4.3.3.tgz
-# /usr/local/sbin/phpxs -a imap
- (remove mysql as a test)
-# pkg_delete php4-mysql-4.3.3
-# /usr/local/sbin/phpxs -r mysql
- (install the PEAR libraries)
-# pkg_add php4-pear-4.3.3.tgz
+15. You can edit /usr/local/lib/php.ini file to set PHP options.
+ Edit your httpd.conf or srm.conf file and add:
+ AddType application/x-httpd-php .php
- Read the packages(7) manual page for more information about binary
- packages on OpenBSD.
- _________________________________________________________________
+ Depending on your Apache install and Unix variant, there are many
+ possible ways to stop and restart the server. Below are some typical
+ lines used in restarting the server, for different apache/unix
+ installations. You should replace /path/to/ with the path to these
+ applications on your systems.
-Using Ports
+ Example 2-3. Example commands for restarting Apache
+1. Several Linux and SysV variants:
+/etc/rc.d/init.d/httpd restart
- You can also compile up PHP from source using the ports tree. However,
- this is only recommended for users familiar with OpenBSD. The PHP 4
- port is split into two sub-directories: core and extensions. The
- extensions directory generates sub-packages for all of the supported
- PHP modules. If you find you do not want to create some of these
- modules, use the no_* FLAVOR. For example, to skip building the imap
- module, set the FLAVOR to no_imap.
- _________________________________________________________________
+2. Using apachectl scripts:
+/path/to/apachectl stop
+/path/to/apachectl start
-Common Problems
+3. httpdctl and httpsdctl (Using OpenSSL), similar to apachectl:
+/path/to/httpsdctl stop
+/path/to/httpsdctl start
- * The default install of Apache runs inside a chroot(2) jail, which
- will restrict PHP scripts to accessing files under /var/www. You
- will therefore need to create a /var/www/tmp directory for PHP
- session files to be stored, or use an alternative session backend.
- In addition, database sockets need to be placed inside the jail or
- listen on the localhost interface. If you use network functions,
- some files from /etc such as /etc/resolv.conf and /etc/services
- will need to be moved into /var/www/etc. The OpenBSD PEAR package
- automatically installs into the correct chroot directories, so no
- special modification is needed there. More information on the
- OpenBSD Apache is available in the OpenBSD FAQ.
- * The OpenBSD 3.4 package for the gd extension requires XFree86 to
- be installed. If you do not wish to use some of the font features
- that require X11, install the php4-gd-4.3.3-no_x11.tgz package
- instead.
- _________________________________________________________________
+4. Using mod_ssl, or another SSL server, you may want to manually
+stop and start:
+/path/to/apachectl stop
+/path/to/apachectl startssl
-Older Releases
+ The locations of the apachectl and http(s)dctl binaries often vary. If
+ your system has locate or whereis or which commands, these can assist
+ you in finding your server control programs.
- Older releases of OpenBSD used the FLAVORS system to compile up a
- statically linked PHP. Since it is hard to generate binary packages
- using this method, it is now deprecated. You can still use the old
- stable ports trees if you wish, but they are unsupported by the
- OpenBSD team. If you have any comments about this, the current
- maintainer for the port is Anil Madhavapeddy (avsm at openbsd dot
- org).
- _________________________________________________________________
+ Different examples of compiling PHP for apache are as follows:
-Solaris specific installation tips
+ ./configure --with-apxs --with-pgsql
- This section contains notes and hints specific to installing PHP on
- Solaris systems.
- _________________________________________________________________
+ This will create a libphp4.so shared library that is loaded into
+ Apache using a LoadModule line in Apache's httpd.conf file. The
+ PostgreSQL support is embedded into this libphp4.so library.
-Required software
+ ./configure --with-apxs --with-pgsql=shared
- Solaris installs often lack C compilers and their related tools. Read
- this FAQ for information on why using GNU versions for some of these
- tools is necessary. The required software is as follows:
+ This will create a libphp4.so shared library for Apache, but it will
+ also create a pgsql.so shared library that is loaded into PHP either
+ by using the extension directive in php.ini file or by loading it
+ explicitly in a script using the dl() function.
- * gcc (recommended, other C compilers may work)
- * make
- * flex
- * bison
- * m4
- * autoconf
- * automake
- * perl
- * gzip
- * tar
- * GNU sed
+ ./configure --with-apache=/path/to/apache_source --with-pgsql
- In addition, you will need to install (and possibly compile) any
- additional software specific to your configuration, such as Oracle or
- MySQL.
- _________________________________________________________________
+ This will create a libmodphp4.a library, a mod_php4.c and some
+ accompanying files and copy this into the src/modules/php4 directory
+ in the Apache source tree. Then you compile Apache using
+ --activate-module=src/modules/php4/libphp4.a and the Apache build
+ system will create libphp4.a and link it statically into the httpd
+ binary. The PostgreSQL support is included directly into this httpd
+ binary, so the final result here is a single httpd binary that
+ includes all of Apache and all of PHP.
-Using Packages
+ ./configure --with-apache=/path/to/apache_source --with-pgsql=shared
- You can simplify the Solaris install process by using pkgadd to
- install most of your needed components.
- _________________________________________________________________
+ Same as before, except instead of including PostgreSQL support
+ directly into the final httpd you will get a pgsql.so shared library
+ that you can load into PHP from either the php.ini file or directly
+ using dl().
-Apache 1.3.x on Unix systems
+ When choosing to build PHP in different ways, you should consider the
+ advantages and drawbacks of each method. Building as a shared object
+ will mean that you can compile apache separately, and don't have to
+ recompile everything as you add to, or change, PHP. Building PHP into
+ apache (static method) means that PHP will load and run faster. For
+ more information, see the Apache webpage on DSO support.
- This section contains notes and hints specific to Apache installs of
- PHP on Unix platforms. We also have instructions and notes for Apache
- 2 on a separate page.
+ Note: Apache's default httpd.conf currently ships with a section
+ that looks like this:
- You can select arguments to add to the configure on line 10 below from
- the list of core configure options and from extension specific options
- described at the respective places in the manual. The version numbers
- have been omitted here, to ensure the instructions are not incorrect.
- You will need to replace the 'xxx' here with the correct values from
- your files.
+User nobody
+Group "#-1"
- Example 3-5. Installation Instructions (Apache Shared Module Version)
- for PHP
-1. gunzip apache_xxx.tar.gz
-2. tar -xvf apache_xxx.tar
-3. gunzip php-xxx.tar.gz
-4. tar -xvf php-xxx.tar
-5. cd apache_xxx
-6. ./configure --prefix=/www --enable-module=so
-7. make
-8. make install
-9. cd ../php-xxx
-
-10. Now, configure your PHP. This is where you customize your PHP
- with various options, like which extensions will be enabled. Do a
- ./configure --help for a list of available options. In our example
- we'll do a simple configure with Apache 1 and MySQL support. Your
- path to apxs may differ from our example.
-
- ./configure --with-mysql --with-apxs=/www/bin/apxs
-
-11. make
-12. make install
-
- If you decide to change your configure options after installation,
- you only need to repeat the last three steps. You only need to
- restart apache for the new module to take effect. A recompile of
- Apache is not needed.
-
- Note that unless told otherwise, 'make install' will also install PEAR,
- various PHP tools such as phpize, install the PHP CLI, and more.
-
-13. Setup your php.ini file:
-
- cp php.ini-dist /usr/local/lib/php.ini
-
- You may edit your .ini file to set PHP options. If you prefer your
- php.ini in another location, use --with-config-file-path=/some/path in
- step 10.
-
- If you instead choose php.ini-recommended, be certain to read the list
- of changes within, as they affect how PHP behaves.
-
-14. Edit your httpd.conf to load the PHP module. The path on the right hand
- side of the LoadModule statement must point to the path of the PHP
- module on your system. The make install from above may have already
- added this for you, but be sure to check.
-
- For PHP 4:
-
- LoadModule php4_module libexec/libphp4.so
-
- For PHP 5:
-
- LoadModule php5_module libexec/libphp5.so
-
-15. And in the AddModule section of httpd.conf, somewhere under the
- ClearModuleList, add this:
-
- For PHP 4:
-
- AddModule mod_php4.c
-
- For PHP 5:
-
- AddModule mod_php5.c
-
-16. Tell Apache to parse certain extensions as PHP. For example,
- let's have Apache parse the .php extension as PHP. You could
- have any extension(s) parse as PHP by simply adding more, with
- each separated by a space. We'll add .phtml to demonstrate.
-
- AddType application/x-httpd-php .php .phtml
-
- It's also common to setup the .phps extension to show highlighted PHP
- source, this can be done with:
-
- AddType application/x-httpd-php-source .phps
-
-17. Use your normal procedure for starting the Apache server. (You must
- stop and restart the server, not just cause the server to reload by
- using a HUP or USR1 signal.)
-
- Depending on your Apache install and Unix variant, there are many
- possible ways to stop and restart the server. Below are some typical
- lines used in restarting the server, for different apache/unix
- installations. You should replace /path/to/ with the path to these
- applications on your systems.
-
- Example 3-6. Example commands for restarting Apache
-1. Several Linux and SysV variants:
-/etc/rc.d/init.d/httpd restart
-
-2. Using apachectl scripts:
-/path/to/apachectl stop
-/path/to/apachectl start
-
-3. httpdctl and httpsdctl (Using OpenSSL), similar to apachectl:
-/path/to/httpsdctl stop
-/path/to/httpsdctl start
-
-4. Using mod_ssl, or another SSL server, you may want to manually
-stop and start:
-/path/to/apachectl stop
-/path/to/apachectl startssl
-
- The locations of the apachectl and http(s)dctl binaries often vary. If
- your system has locate or whereis or which commands, these can assist
- you in finding your server control programs.
-
- Different examples of compiling PHP for apache are as follows:
-
- ./configure --with-apxs --with-pgsql
-
- This will create a libphp4.so shared library that is loaded into
- Apache using a LoadModule line in Apache's httpd.conf file. The
- PostgreSQL support is embedded into this libphp4.so library.
-
- ./configure --with-apxs --with-pgsql=shared
-
- This will create a libphp4.so shared library for Apache, but it will
- also create a pgsql.so shared library that is loaded into PHP either
- by using the extension directive in php.ini file or by loading it
- explicitly in a script using the dl() function.
-
- ./configure --with-apache=/path/to/apache_source --with-pgsql
-
- This will create a libmodphp4.a library, a mod_php4.c and some
- accompanying files and copy this into the src/modules/php4 directory
- in the Apache source tree. Then you compile Apache using
- --activate-module=src/modules/php4/libphp4.a and the Apache build
- system will create libphp4.a and link it statically into the httpd
- binary. The PostgreSQL support is included directly into this httpd
- binary, so the final result here is a single httpd binary that
- includes all of Apache and all of PHP.
-
- ./configure --with-apache=/path/to/apache_source --with-pgsql=shared
-
- Same as before, except instead of including PostgreSQL support
- directly into the final httpd you will get a pgsql.so shared library
- that you can load into PHP from either the php.ini file or directly
- using dl().
-
- When choosing to build PHP in different ways, you should consider the
- advantages and drawbacks of each method. Building as a shared object
- will mean that you can compile apache separately, and don't have to
- recompile everything as you add to, or change, PHP. Building PHP into
- apache (static method) means that PHP will load and run faster. For
- more information, see the Apache webpage on DSO support.
-
- Note: Apache's default httpd.conf currently ships with a section
- that looks like this:
-
-User nobody
-Group "#-1"
-
- Unless you change that to "Group nogroup" or something like that
- ("Group daemon" is also very common) PHP will not be able to open
- files.
+ Unless you change that to "Group nogroup" or something like that
+ ("Group daemon" is also very common) PHP will not be able to open
+ files.
Note: Make sure you specify the installed version of apxs when
using --with-apxs=/path/to/apxs. You must NOT use the apxs version
will need to replace the 'NN' here with the correct values from your
files.
- Example 3-7. Installation Instructions (Apache 2 Shared Module
+ Example 2-4. Installation Instructions (Apache 2 Shared Module
Version)
1. gzip -d httpd-2_0_NN.tar.gz
2. tar xvf httpd-2_0_NN.tar
path to apxs may differ, in fact, the binary may even be named apxs2 on
your system.
- ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
+ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
+
+11. make
+12. make install
+
+ If you decide to change your configure options after installation,
+ you only need to repeat the last three steps. You only need to
+ restart apache for the new module to take effect. A recompile of
+ Apache is not needed.
+
+ Note that unless told otherwise, 'make install' will also install PEAR,
+ various PHP tools such as phpize, install the PHP CLI, and more.
+
+13. Setup your php.ini
+
+ cp php.ini-dist /usr/local/lib/php.ini
+
+ You may edit your .ini file to set PHP options. If you prefer having
+ php.ini in another location, use --with-config-file-path=/some/path in
+ step 10.
+
+ If you instead choose php.ini-recommended, be certain to read the list
+ of changes within, as they affect how PHP behaves.
+
+14. Edit your httpd.conf to load the PHP module. The path on the right hand
+ side of the LoadModule statement must point to the path of the PHP
+ module on your system. The make install from above may have already
+ added this for you, but be sure to check.
+
+ For PHP 4:
+
+ LoadModule php4_module libexec/libphp4.so
+
+ For PHP 5:
+
+ LoadModule php5_module libexec/libphp5.so
+
+15. Tell Apache to parse certain extensions as PHP. For example,
+ let's have Apache parse the .php extension as PHP. You could
+ have any extension(s) parse as PHP by simply adding more, with
+ each separated by a space. We'll add .phtml to demonstrate.
+
+ AddType application/x-httpd-php .php .phtml
+
+ It's also common to setup the .phps extension to show highlighted PHP
+ source, this can be done with:
+
+ AddType application/x-httpd-php-source .phps
+
+16. Use your normal procedure for starting the Apache server, e.g.:
+
+ /usr/local/apache2/bin/apachectl start
+
+ Following the steps above you will have a running Apache 2.0 with
+ support for PHP as SAPI module. Of course there are many more
+ configuration options available for both, Apache and PHP. For more
+ information use ./configure --help in the corresponding source tree.
+ In case you wish to build a multithreaded version of Apache 2.0 you
+ must overwrite the standard MPM-Module prefork either with worker or
+ perchild. To do so append to your configure line in step 6 above
+ either the option --with-mpm=worker or --with-mpm=perchild. Take care
+ about the consequences and understand what you are doing. For more
+ information read the Apache documentation about the MPM-Modules.
+
+ Note: If you want to use content negotiation, read related FAQ.
+
+ Note: To build a multithreaded version of Apache your system must
+ support threads. This also implies to build PHP with experimental
+ Zend Thread Safety (ZTS). Therefore not all extensions might be
+ available. The recommended setup is to build Apache with the
+ standard prefork MPM-Module.
+ _________________________________________________________________
+
+Caudium
+
+ PHP 4 can be built as a Pike module for the Caudium webserver. Note
+ that this is not supported with PHP 3. Follow the simple instructions
+ below to install PHP 4 for Caudium.
+
+ Example 2-5. Caudium Installation Instructions
+1. Make sure you have Caudium installed prior to attempting to
+ install PHP 4. For PHP 4 to work correctly, you will need Pike
+ 7.0.268 or newer. For the sake of this example we assume that
+ Caudium is installed in /opt/caudium/server/.
+2. Change directory to php-x.y.z (where x.y.z is the version number).
+3. ./configure --with-caudium=/opt/caudium/server
+4. make
+5. make install
+6. Restart Caudium if it's currently running.
+7. Log into the graphical configuration interface and go to the
+ virtual server where you want to add PHP 4 support.
+8. Click Add Module and locate and then add the PHP 4 Script Support module.
+9. If the documentation says that the 'PHP 4 interpreter isn't
+ available', make sure that you restarted the server. If you did
+ check /opt/caudium/logs/debug/default.1 for any errors related to
+ <filename>PHP4.so</filename>. Also make sure that
+ <filename>caudium/server/lib/[pike-version]/PHP4.so</filename>
+ is present.
+10. Configure the PHP Script Support module if needed.
+
+ You can of course compile your Caudium module with support for the
+ various extensions available in PHP 4. See the reference pages for
+ extension specific configure options.
+
+ Note: When compiling PHP 4 with MySQL support you must make sure
+ that the normal MySQL client code is used. Otherwise there might be
+ conflicts if your Pike already has MySQL support. You do this by
+ specifying a MySQL install directory the --with-mysql option.
+ _________________________________________________________________
+
+fhttpd related notes
+
+ To build PHP as an fhttpd module, answer "yes" to "Build as an fhttpd
+ module?" (the --with-fhttpd=DIR option to configure) and specify the
+ fhttpd source base directory. The default directory is
+ /usr/local/src/fhttpd. If you are running fhttpd, building PHP as a
+ module will give better performance, more control and remote execution
+ capability.
+
+ Note: Support for fhttpd is no longer available as of PHP 4.3.0.
+ _________________________________________________________________
+
+Sun, iPlanet and Netscape servers on Sun Solaris
+
+ This section contains notes and hints specific to Sun Java System Web
+ Server, Sun ONE Web Server, iPlanet and Netscape server installs of
+ PHP on Sun Solaris.
+
+ From PHP 4.3.3 on you can use PHP scripts with the NSAPI module to
+ generate custom directory listings and error pages. Additional
+ functions for Apache compatibility are also available. For support in
+ current webservers read the note about subrequests.
+
+ You can find more information about setting up PHP for the Netscape
+ Enterprise Server (NES) here:
+ http://benoit.noss.free.fr/php/install-php4.html
+
+ To build PHP with Sun JSWS/Sun ONE WS/iPlanet/Netscape webservers,
+ enter the proper install directory for the --with-nsapi=[DIR] option.
+ The default directory is usually /opt/netscape/suitespot/. Please also
+ read /php-xxx-version/sapi/nsapi/nsapi-readme.txt.
+
+ 1. Install the following packages from http://www.sunfreeware.com/ or
+ another download site:
+
+ autoconf-2.13
+ automake-1.4
+ bison-1_25-sol26-sparc-local
+ flex-2_5_4a-sol26-sparc-local
+ gcc-2_95_2-sol26-sparc-local
+ gzip-1.2.4-sol26-sparc-local
+ m4-1_4-sol26-sparc-local
+ make-3_76_1-sol26-sparc-local
+ mysql-3.23.24-beta (if you want mysql support)
+ perl-5_005_03-sol26-sparc-local
+ tar-1.13 (GNU tar)
+ 2. Make sure your path includes the proper directories
+ PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin and make it
+ available to your system export PATH.
+ 3. gunzip php-x.x.x.tar.gz (if you have a .gz dist, otherwise go to
+ 4).
+ 4. tar xvf php-x.x.x.tar
+ 5. Change to your extracted PHP directory: cd ../php-x.x.x
+ 6. For the following step, make sure /opt/netscape/suitespot/ is
+ where your netscape server is installed. Otherwise, change to the
+ correct path and run:
+
+./configure --with-mysql=/usr/local/mysql \
+--with-nsapi=/opt/netscape/suitespot/ \
+--enable-libgcc
+
+ 7. Run make followed by make install.
+
+ After performing the base install and reading the appropriate readme
+ file, you may need to perform some additional configuration steps.
+
+ Configuration Instructions for Sun/iPlanet/Netscape. Firstly you may
+ need to add some paths to the LD_LIBRARY_PATH environment for the
+ server to find all the shared libs. This can best done in the start
+ script for your webserver. The start script is often located in:
+ /path/to/server/https-servername/start. You may also need to edit the
+ configuration files that are located in:
+ /path/to/server/https-servername/config/.
+
+ 1. Add the following line to mime.types (you can do that by the
+ administration server):
+
+type=magnus-internal/x-httpd-php exts=php
+
+ 2. Edit magnus.conf (for servers >= 6) or obj.conf (for servers < 6)
+ and add the following, shlib will vary depending on your system,
+ it will be something like /opt/netscape/suitespot/bin/libphp4.so.
+ You should place the following lines after mime types init.
+
+Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/o
+pt/netscape/suitespot/bin/libphp4.so"
+Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php
+_ini="/path/to/php.ini"]
+
+ (PHP >= 4.3.3) The php_ini parameter is optional but with it you
+ can place your php.ini in your webserver config directory.
+ 3. Configure the default object in obj.conf (for virtual server
+ classes [version 6.0+] in their vserver.obj.conf):
+
+<Object name="default">
+.
+.
+.
+.#NOTE this next line should happen after all 'ObjectType' and before all 'AddL
+og' lines
+Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inik
+ey=value ...]
+.
+.
+</Object>
+
+ (PHP >= 4.3.3) As additional parameters you can add some special
+ php.ini-values, for example you can set a
+ docroot="/path/to/docroot" specific to the context php4_execute is
+ called. For boolean ini-keys please use 0/1 as value, not
+ "On","Off",... (this will not work correctly), e.g.
+ zlib.output_compression=1 instead of zlib.output_compression="On"
+ 4. This is only needed if you want to configure a directory that only
+ consists of PHP scripts (same like a cgi-bin directory):
+
+<Object name="x-httpd-php">
+ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
+Service fn=php4_execute [inikey=value inikey=value ...]
+</Object>
+
+ After that you can configure a directory in the Administration
+ server and assign it the style x-httpd-php. All files in it will
+ get executed as PHP. This is nice to hide PHP usage by renaming
+ files to .html.
+ 5. Setup of authentication: PHP authentication cannot be used with
+ any other authentication. ALL AUTHENTICATION IS PASSED TO YOUR PHP
+ SCRIPT. To configure PHP Authentication for the entire server, add
+ the following line to your default object:
+
+<Object name="default">
+AuthTrans fn=php4_auth_trans
+.
+.
+.
+</Object>
+
+ 6. To use PHP Authentication on a single directory, add the
+ following:
+
+<Object ppath="d:\path\to\authenticated\dir\*">
+AuthTrans fn=php4_auth_trans
+</Object>
+
+ Note: The stacksize that PHP uses depends on the configuration of
+ the webserver. If you get crashes with very large PHP scripts, it
+ is recommended to raise it with the Admin Server (in the section
+ "MAGNUS EDITOR").
+ _________________________________________________________________
+
+CGI environment and recommended modifications in php.ini
+
+ Important when writing PHP scripts is the fact that Sun JSWS/Sun ONE
+ WS/iPlanet/Netscape is a multithreaded web server. Because of that all
+ requests are running in the same process space (the space of the
+ webserver itself) and this space has only one environment. If you want
+ to get CGI variables like PATH_INFO, HTTP_HOST etc. it is not the
+ correct way to try this in the old PHP 3.x way with getenv() or a
+ similar way (register globals to environment, $_ENV). You would only
+ get the environment of the running webserver without any valid CGI
+ variables!
+
+ Note: Why are there (invalid) CGI variables in the environment?
+
+ Answer: This is because you started the webserver process from the
+ admin server which runs the startup script of the webserver, you
+ wanted to start, as a CGI script (a CGI script inside of the admin
+ server!). This is why the environment of the started webserver has
+ some CGI environment variables in it. You can test this by starting
+ the webserver not from the administration server. Use the command
+ line as root user and start it manually - you will see there are no
+ CGI-like environment variables.
+
+ Simply change your scripts to get CGI variables in the correct way for
+ PHP 4.x by using the superglobal $_SERVER. If you have older scripts
+ which use $HTTP_HOST, etc., you should turn on register_globals in
+ php.ini and change the variable order too (important: remove "E" from
+ it, because you do not need the environment here):
+variables_order = "GPCS"
+register_globals = On
+ _________________________________________________________________
+
+Special use for error pages or self-made directory listings (PHP >= 4.3.3)
+
+ You can use PHP to generate the error pages for "404 Not Found" or
+ similar. Add the following line to the object in obj.conf for every
+ error page you want to overwrite:
+Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value ini
+key=value...]
+
+ where XXX is the HTTP error code. Please delete any other Error
+ directives which could interfere with yours. If you want to place a
+ page for all errors that could exist, leave the code parameter out.
+ Your script can get the HTTP status code with $_SERVER['ERROR_TYPE'].
+
+ Another possibility is to generate self-made directory listings. Just
+ create a PHP script which displays a directory listing and replace the
+ corresponding default Service line for
+ type="magnus-internal/directory" in obj.conf with the following:
+Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/scr
+ipt.php" [inikey=value inikey=value...]
+
+ For both error and directory listing pages the original URI and
+ translated URI are in the variables $_SERVER['PATH_INFO'] and
+ $_SERVER['PATH_TRANSLATED'].
+ _________________________________________________________________
+
+Note about nsapi_virtual() and subrequests (PHP >= 4.3.3)
+
+ The NSAPI module now supports the nsapi_virtual() function (alias:
+ virtual()) to make subrequests on the webserver and insert the result
+ in the webpage. This function uses some undocumented features from the
+ NSAPI library. On Unix the module automatically looks for the needed
+ functions and uses them if available. If not, nsapi_virtual() is
+ disabled.
+
+ Note: But be warned: Support for nsapi_virtual() is EXPERIMENTAL!!!
+ _________________________________________________________________
+
+CGI and commandline setups
+
+ The default is to build PHP as a CGI program. This creates a
+ commandline interpreter, which can be used for CGI processing, or for
+ non-web-related PHP scripting. If you are running a web server PHP has
+ module support for, you should generally go for that solution for
+ performance reasons. However, the CGI version enables users to run
+ different PHP-enabled pages under different user-ids.
+
+ Warning
+
+ By using the CGI setup, your server is open to several possible
+ attacks. Please read our CGI security section to learn how to defend
+ yourself from those attacks.
+
+ As of PHP 4.3.0, some important additions have happened to PHP. A new
+ SAPI named CLI also exists and it has the same name as the CGI binary.
+ What is installed at {PREFIX}/bin/php depends on your configure line
+ and this is described in detail in the manual section named Using PHP
+ from the command line. For further details please read that section of
+ the manual.
+ _________________________________________________________________
+
+Testing
+
+ If you have built PHP as a CGI program, you may test your build by
+ typing make test. It is always a good idea to test your build. This
+ way you may catch a problem with PHP on your platform early instead of
+ having to struggle with it later.
+ _________________________________________________________________
+
+Benchmarking
+
+ If you have built PHP 3 as a CGI program, you may benchmark your build
+ by typing make bench. Note that if safe mode is on by default, the
+ benchmark may not be able to finish if it takes longer then the 30
+ seconds allowed. This is because the set_time_limit() can not be used
+ in safe mode. Use the max_execution_time configuration setting to
+ control this time for your own scripts. make bench ignores the
+ configuration file.
+
+ Note: make bench is only available for PHP 3.
+ _________________________________________________________________
+
+Using Variables
+
+ Some server supplied environment variables are not defined in the
+ current CGI/1.1 specification. Only the following variables are
+ defined there: AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE,
+ GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING,
+ REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD,
+ SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL, and
+ SERVER_SOFTWARE. Everything else should be treated as 'vendor
+ extensions'.
+ _________________________________________________________________
+
+HP-UX specific installation notes
+
+ This section contains notes and hints specific to installing PHP on
+ HP-UX systems. (Contributed by paul_mckay at clearwater-it dot co dot
+ uk).
+
+ Note: These tips were written for PHP 4.0.4 and Apache 1.3.9.
+
+ 1. You need gzip, download a binary distribution from
+ http://hpux.connect.org.uk/ftp/hpux/Gnu/gzip-1.2.4a/gzip-1.2.4a-sd
+ -10.20.depot.Z uncompress the file and install using swinstall.
+ 2. You need gcc, download a binary distribution from
+ http://gatekeep.cs.utah.edu/ftp/hpux/Gnu/gcc-2.95.2/gcc-2.95.2-sd-
+ 10.20.depot.gz. uncompress this file and install gcc using
+ swinstall.
+ 3. You need the GNU binutils, you can download a binary distribution
+ from
+ http://hpux.connect.org.uk/ftp/hpux/Gnu/binutils-2.9.1/binutils-2.
+ 9.1-sd-10.20.depot.gz. uncompress this file and install binutils
+ using swinstall.
+ 4. You now need bison, you can download a binary distribution from
+ http://hpux.connect.org.uk/ftp/hpux/Gnu/bison-1.28/bison-1.28-sd-1
+ 0.20.depot.gz, install as above.
+ 5. You now need flex, you need to download the source from one of the
+ http://www.gnu.org mirrors. It is in the non-gnu directory of the
+ ftp site. Download the file, gunzip, then tar -xvf it. Go into the
+ newly created flex directory and run ./configure, followed by
+ make, and then make install.
+ If you have errors here, it's probably because gcc etc. are not in
+ your PATH so add them to your PATH.
+ 6. Download the PHP and apache sources.
+ 7. gunzip and tar -xvf them. We need to hack a couple of files so
+ that they can compile OK.
+ 8. Firstly the configure file needs to be hacked because it seems to
+ lose track of the fact that you are a hpux machine, there will be
+ a better way of doing this but a cheap and cheerful hack is to put
+ lt_target=hpux10.20 on line 47286 of the configure script.
+ 9. Next, the Apache GuessOS file needs to be hacked. Under
+ apache_1.3.9/src/helpers change line 89 from echo
+ "hp${HPUXMACH}-hpux${HPUXVER}"; exit 0 to: echo
+ "hp${HPUXMACH}-hp-hpux${HPUXVER}"; exit 0
+ 10. You cannot install PHP as a shared object under HP-UX so you must
+ compile it as a static, just follow the instructions at the Apache
+ page.
+ 11. PHP and Apache should have compiled OK, but Apache won't start.
+ you need to create a new user for Apache, e.g. www, or apache. You
+ then change lines 252 and 253 of the conf/httpd.conf in Apache so
+ that instead of
+
+User nobody
+Group nogroup
+
+ you have something like
+
+User www
+Group sys
+
+ This is because you can't run Apache as nobody under hp-ux. Apache
+ and PHP should then work.
+ _________________________________________________________________
+
+OpenBSD installation notes
+
+ This section contains notes and hints specific to installing PHP on
+ OpenBSD 3.4.
+ _________________________________________________________________
+
+Using Binary Packages
+
+ Using binary packages to install PHP on OpenBSD is the recommended and
+ simplest method. The core package has been separated from the various
+ modules, and each can be installed and removed independently from the
+ others. The files you need can be found on your OpenBSD CD or on the
+ FTP site.
+
+ The main package you need to install is php4-core-4.3.3.tgz, which
+ contains the basic engine (plus gettext and iconv). Next, take a look
+ at the module packages, such as php4-mysql-4.3.3.tgz or
+ php4-imap-4.3.3.tgz. You need to use the phpxs command to activate and
+ deactivate these modules in your php.ini.
+
+ Example 2-6. OpenBSD Package Install Example
+# pkg_add php4-core-4.3.3.tgz
+# /usr/local/sbin/phpxs -s
+# cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini
+ (add in mysql)
+# pkg_add php4-mysql-4.3.3.tgz
+# /usr/local/sbin/phpxs -a mysql
+ (add in imap)
+# pkg_add php4-imap-4.3.3.tgz
+# /usr/local/sbin/phpxs -a imap
+ (remove mysql as a test)
+# pkg_delete php4-mysql-4.3.3
+# /usr/local/sbin/phpxs -r mysql
+ (install the PEAR libraries)
+# pkg_add php4-pear-4.3.3.tgz
+
+ Read the packages(7) manual page for more information about binary
+ packages on OpenBSD.
+ _________________________________________________________________
+
+Using Ports
+
+ You can also compile up PHP from source using the ports tree. However,
+ this is only recommended for users familiar with OpenBSD. The PHP 4
+ port is split into two sub-directories: core and extensions. The
+ extensions directory generates sub-packages for all of the supported
+ PHP modules. If you find you do not want to create some of these
+ modules, use the no_* FLAVOR. For example, to skip building the imap
+ module, set the FLAVOR to no_imap.
+ _________________________________________________________________
+
+Common Problems
+
+ * The default install of Apache runs inside a chroot(2) jail, which
+ will restrict PHP scripts to accessing files under /var/www. You
+ will therefore need to create a /var/www/tmp directory for PHP
+ session files to be stored, or use an alternative session backend.
+ In addition, database sockets need to be placed inside the jail or
+ listen on the localhost interface. If you use network functions,
+ some files from /etc such as /etc/resolv.conf and /etc/services
+ will need to be moved into /var/www/etc. The OpenBSD PEAR package
+ automatically installs into the correct chroot directories, so no
+ special modification is needed there. More information on the
+ OpenBSD Apache is available in the OpenBSD FAQ.
+ * The OpenBSD 3.4 package for the gd extension requires XFree86 to
+ be installed. If you do not wish to use some of the font features
+ that require X11, install the php4-gd-4.3.3-no_x11.tgz package
+ instead.
+ _________________________________________________________________
+
+Older Releases
-11. make
-12. make install
+ Older releases of OpenBSD used the FLAVORS system to compile up a
+ statically linked PHP. Since it is hard to generate binary packages
+ using this method, it is now deprecated. You can still use the old
+ stable ports trees if you wish, but they are unsupported by the
+ OpenBSD team. If you have any comments about this, the current
+ maintainer for the port is Anil Madhavapeddy (avsm at openbsd dot
+ org).
+ _________________________________________________________________
- If you decide to change your configure options after installation,
- you only need to repeat the last three steps. You only need to
- restart apache for the new module to take effect. A recompile of
- Apache is not needed.
+Solaris specific installation tips
- Note that unless told otherwise, 'make install' will also install PEAR,
- various PHP tools such as phpize, install the PHP CLI, and more.
+ This section contains notes and hints specific to installing PHP on
+ Solaris systems.
+ _________________________________________________________________
-13. Setup your php.ini
+Required software
- cp php.ini-dist /usr/local/lib/php.ini
+ Solaris installs often lack C compilers and their related tools. Read
+ this FAQ for information on why using GNU versions for some of these
+ tools is necessary. The required software is as follows:
- You may edit your .ini file to set PHP options. If you prefer having
- php.ini in another location, use --with-config-file-path=/some/path in
- step 10.
+ * gcc (recommended, other C compilers may work)
+ * make
+ * flex
+ * bison
+ * m4
+ * autoconf
+ * automake
+ * perl
+ * gzip
+ * tar
+ * GNU sed
- If you instead choose php.ini-recommended, be certain to read the list
- of changes within, as they affect how PHP behaves.
+ In addition, you will need to install (and possibly compile) any
+ additional software specific to your configuration, such as Oracle or
+ MySQL.
+ _________________________________________________________________
-14. Edit your httpd.conf to load the PHP module. The path on the right hand
- side of the LoadModule statement must point to the path of the PHP
- module on your system. The make install from above may have already
- added this for you, but be sure to check.
+Using Packages
- For PHP 4:
+ You can simplify the Solaris install process by using pkgadd to
+ install most of your needed components.
+ _________________________________________________________________
- LoadModule php4_module libexec/libphp4.so
+Gentoo installation notes
- For PHP 5:
+ This section contains notes and hints specific to installing PHP on
+ Gentoo Linux.
+ _________________________________________________________________
- LoadModule php5_module libexec/libphp5.so
+Using Portage (emerge)
-15. Tell Apache to parse certain extensions as PHP. For example,
- let's have Apache parse the .php extension as PHP. You could
- have any extension(s) parse as PHP by simply adding more, with
- each separated by a space. We'll add .phtml to demonstrate.
+ While you can just download the PHP source and compile it yourself,
+ using Gentoo's packaging system is the simplest and cleanest method of
+ installing PHP. If you are not familiar with building software on
+ Linux, this is the way to go.
- AddType application/x-httpd-php .php .phtml
+ If you have built your Gentoo system so far, you are probably used to
+ Portage already. Installing Apache and PHP is no different than the
+ other system tools.
- It's also common to setup the .phps extension to show highlighted PHP
- source, this can be done with:
+ The first decision you need to make is whether you want to install
+ Apache 1.3.x or Apache 2.x. While both can be used with PHP, the steps
+ given bellow will use Apache 1.3.x. Another thing to consider is
+ whether your local Portage tree is up to date. If you have not updated
+ it recently, you need to run emerge sync before anything else. This
+ way, you will be using the most recent stable version of Apache and
+ PHP.
- AddType application/x-httpd-php-source .phps
+ Now that everything is in place, you can use the following example to
+ install Apache and PHP:
-16. Use your normal procedure for starting the Apache server, e.g.:
+ Example 2-7. Gentoo Install Example with Apache 1.3
+# emerge \<apache-2
+# USE="-*" emerge php mod_php
+# ebuild /var/db/pkg/dev-php/mod_php-<your PHP version>/mod_php-<your PHP versi
+on>.ebuild config
+# nano /etc/conf.d/apache
+ Add "-D PHP4" to APACHE_OPTS
- /usr/local/apache2/bin/apachectl start
+# rc-update add apache default
+# /etc/init.d/apache start
- Following the steps above you will have a running Apache 2.0 with
- support for PHP as SAPI module. Of course there are many more
- configuration options available for both, Apache and PHP. For more
- information use ./configure --help in the corresponding source tree.
- In case you wish to build a multithreaded version of Apache 2.0 you
- must overwrite the standard MPM-Module prefork either with worker or
- perchild. To do so append to your configure line in step 6 above
- either the option --with-mpm=worker or --with-mpm=perchild. Take care
- about the consequences and understand what you are doing. For more
- information read the Apache documentation about the MPM-Modules.
+ You can read more about emerge in the excellent Portage Manual
+ provided on the Gentoo website.
- Note: To build a multithreaded version of Apache your system must
- support threads. This also implies to build PHP with experimental
- Zend Thread Safety (ZTS). Therefore not all extensions might be
- available. The recommended setup is to build Apache with the
- standard prefork MPM-Module.
+ If you need to use Apache 2, you can simply use emerge apache in the
+ last example.
_________________________________________________________________
-Caudium
+Better control on configuration
- PHP 4 can be built as a Pike module for the Caudium webserver. Note
- that this is not supported with PHP 3. Follow the simple instructions
- below to install PHP 4 for Caudium.
+ In the last section, PHP was emerged without any activated modules. As
+ of this writing, the only module activated by default with Portage is
+ XML which is needed by PEAR. This may not be what you want and you
+ will soon discover that you need more activated modules, like MySQL,
+ gettext, GD, etc.
- Example 3-8. Caudium Installation Instructions
-1. Make sure you have Caudium installed prior to attempting to
- install PHP 4. For PHP 4 to work correctly, you will need Pike
- 7.0.268 or newer. For the sake of this example we assume that
- Caudium is installed in /opt/caudium/server/.
-2. Change directory to php-x.y.z (where x.y.z is the version number).
-3. ./configure --with-caudium=/opt/caudium/server
-4. make
-5. make install
-6. Restart Caudium if it's currently running.
-7. Log into the graphical configuration interface and go to the
- virtual server where you want to add PHP 4 support.
-8. Click Add Module and locate and then add the PHP 4 Script Support module.
-9. If the documentation says that the 'PHP 4 interpreter isn't
- available', make sure that you restarted the server. If you did
- check /opt/caudium/logs/debug/default.1 for any errors related to
- <filename>PHP4.so</filename>. Also make sure that
- <filename>caudium/server/lib/[pike-version]/PHP4.so</filename>
- is present.
-10. Configure the PHP Script Support module if needed.
+ When you compile PHP from source yourself, you need to activate
+ modules via the configure command. With Gentoo, you can simply provide
+ USE flags which will be passed to the configure script automatically.
+ To see which USE flags to use with emerge, you can try:
- You can of course compile your Caudium module with support for the
- various extensions available in PHP 4. See the reference pages for
- extension specific configure options.
+ Example 2-8. Getting the list of valid USE flags
+# USE="-*" emerge -pv php
- Note: When compiling PHP 4 with MySQL support you must make sure
- that the normal MySQL client code is used. Otherwise there might be
- conflicts if your Pike already has MySQL support. You do this by
- specifying a MySQL install directory the --with-mysql option.
- _________________________________________________________________
+[ebuild N ] dev-php/php-4.3.6-r1 -X -berkdb -crypt -curl -debug -doc
+-fdftk -firebird -flash -freetds -gd -gd-external -gdbm -gmp -hardenedphp
+-imap -informix -ipv6 -java -jpeg -kerberos -ldap -mcal -memlimit -mssql
+-mysql -ncurses -nls -oci8 -odbc -pam -pdflib -png -postgres -qt -readline
+-snmp -spell -ssl -tiff -truetype -xml2 -yaz 3,876 kB
-fhttpd related notes
+ As you can see from the last output, PHP considers a lot of USE flags.
+ Look at them closely and choose what you need. If you choose a flag
+ and you do not have the proper libraries, Portage will compile them
+ for you. It is a good idea to use emerge -pv again to see what Portage
+ will compile in accordance to your USE flags. As an example, if you do
+ not have X installed and you choose to include X in the USE flags,
+ Portage will compile X prior to PHP, which can take a couple of hours.
- To build PHP as an fhttpd module, answer "yes" to "Build as an fhttpd
- module?" (the --with-fhttpd=DIR option to configure) and specify the
- fhttpd source base directory. The default directory is
- /usr/local/src/fhttpd. If you are running fhttpd, building PHP as a
- module will give better performance, more control and remote execution
- capability.
+ If you choose to compile PHP with MySQL, cURL and GD support, the
+ command will look something like this:
- Note: Support for fhttpd is no longer available as of PHP 4.3.0.
+ Example 2-9. Install PHP with USE flags
+ # USE="-* curl mysql gd" emerge php mod_php
+
+ As in the last example, do not forget to emerge php as well as
+ mod_php. php is responsible for the command line version of PHP as
+ mod_php is for the Apache module version of PHP.
_________________________________________________________________
-Sun, iPlanet and Netscape servers on Sun Solaris
+Common Problems
- This section contains notes and hints specific to Sun Java System Web
- Server, Sun ONE Web Server, iPlanet and Netscape server installs of
- PHP on Sun Solaris.
+ * If you see the PHP source instead of the result the script should
+ produce, you have probably forgot to edit /etc/conf.d/apache.
+ Apache needs to be started with the -D PHP4 flag. To see if the
+ flag is present, you should be able to see it when using ps ax |
+ grep apache while Apache is running.
+ * Due to slotting problems, you might end up with more than one
+ version of PHP installed on your system. If this is the case, you
+ need to unmerge the old versions manually by using emerge unmerge
+ mod_php-<old version>.
+ * If you cannot emerge PHP because of Java, try putting -* in front
+ of your USE flags like in the above examples.
+ * If you are having problems configuring Apache and PHP, you can
+ always search the Gentoo Forums. Try searching with the keywords
+ "Apache PHP".
+ _________________________________________________________________
- From PHP 4.3.3 on you can use PHP scripts with the NSAPI module to
- generate custom directory listings and error pages. Additional
- functions for Apache compatibility are also available. For support in
- current webservers read the note about subrequests.
+Chapter 3. Installation on Mac OS X
- You can find more information about setting up PHP for the Netscape
- Enterprise Server (NES) here:
- http://benoit.noss.free.fr/php/install-php4.html
+ This section contains notes and hints specific to installing PHP on
+ Mac OS X. There are two slightly different versions of Mac OS X,
+ Client and Server, our manual deals with installing PHP on both
+ systems. Note that PHP is not available for MacOS 9 and earlier
+ versions.
+ _________________________________________________________________
- To build PHP with Sun JSWS/Sun ONE WS/iPlanet/Netscape webservers,
- enter the proper install directory for the --with-nsapi=[DIR] option.
- The default directory is usually /opt/netscape/suitespot/. Please also
- read /php-xxx-version/sapi/nsapi/nsapi-readme.txt.
+Using Packages
- 1. Install the following packages from http://www.sunfreeware.com/ or
- another download site:
+ There are a few pre-packaged and pre-compiled versions of PHP for Mac
+ OS X. This can help in setting up a standard configuration, but if you
+ need to have a different set of features (such as a secure server, or
+ a different database driver), you may need to build PHP and/or your
+ web server yourself. If you are unfamiliar with building and compiling
+ your own software, it's worth checking whether somebody has already
+ built a packaged version of PHP with the features you need.
+ _________________________________________________________________
- autoconf-2.13
- automake-1.4
- bison-1_25-sol26-sparc-local
- flex-2_5_4a-sol26-sparc-local
- gcc-2_95_2-sol26-sparc-local
- gzip-1.2.4-sol26-sparc-local
- m4-1_4-sol26-sparc-local
- make-3_76_1-sol26-sparc-local
- mysql-3.23.24-beta (if you want mysql support)
- perl-5_005_03-sol26-sparc-local
- tar-1.13 (GNU tar)
- 2. Make sure your path includes the proper directories
- PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin and make it
- available to your system export PATH.
- 3. gunzip php-x.x.x.tar.gz (if you have a .gz dist, otherwise go to
- 4).
- 4. tar xvf php-x.x.x.tar
- 5. Change to your extracted PHP directory: cd ../php-x.x.x
- 6. For the following step, make sure /opt/netscape/suitespot/ is
- where your netscape server is installed. Otherwise, change to the
- correct path and run:
+Compiling for OS X Server
-./configure --with-mysql=/usr/local/mysql \
---with-nsapi=/opt/netscape/suitespot/ \
---enable-libgcc
+ Mac OS X Server install.
- 7. Run make followed by make install.
+ 1. Get the latest distributions of Apache and PHP.
+ 2. Untar them, and run the configure program on Apache like so.
- After performing the base install and reading the appropriate readme
- file, you may need to perform some additional configuration steps.
+./configure --exec-prefix=/usr \
+--localstatedir=/var \
+--mandir=/usr/share/man \
+--libexecdir=/System/Library/Apache/Modules \
+--iconsdir=/System/Library/Apache/Icons \
+--includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \
+--enable-shared=max \
+--enable-module=most \
+--target=apache
- Configuration Instructions for Sun/iPlanet/Netscape. Firstly you may
- need to add some paths to the LD_LIBRARY_PATH environment for the
- server to find all the shared libs. This can best done in the start
- script for your webserver. The start script is often located in:
- /path/to/server/https-servername/start. You may also need to edit the
- configuration files that are located in:
- /path/to/server/https-servername/config/.
+ 3. If you want the compiler to do some optimization, you may also
+ want to add this line:
- 1. Add the following line to mime.types (you can do that by the
- administration server):
+setenv OPTIM=-O2
-type=magnus-internal/x-httpd-php exts=php
+ 4. Next, go to the PHP 4 source directory and configure it.
- 2. Edit magnus.conf (for servers >= 6) or obj.conf (for servers < 6)
- and add the following, shlib will vary depending on your system,
- it will be something like /opt/netscape/suitespot/bin/libphp4.so.
- You should place the following lines after mime types init.
+./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/share/man \
+ --with-xml \
+ --with-apache=/src/apache_1.3.12
-Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/o
-pt/netscape/suitespot/bin/libphp4.so"
-Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php
-_ini="/path/to/php.ini"]
+ If you have any other additions (MySQL, GD, etc.), be sure to add
+ them here. For the --with-apache string, put in the path to your
+ apache source directory, for example /src/apache_1.3.12.
+ 5. Type make and make install. This will add a directory to your
+ Apache source directory under src/modules/php4.
+ 6. Now, reconfigure Apache to build in PHP 4.
- (PHP >= 4.3.3) The php_ini parameter is optional but with it you
- can place your php.ini in your webserver config directory.
- 3. Configure the default object in obj.conf (for virtual server
- classes [version 6.0+] in their vserver.obj.conf):
+./configure --exec-prefix=/usr \
+--localstatedir=/var \
+--mandir=/usr/share/man \
+--libexecdir=/System/Library/Apache/Modules \
+--iconsdir=/System/Library/Apache/Icons \
+--includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \
+--enable-shared=max \
+--enable-module=most \
+--target=apache \
+--activate-module=src/modules/php4/libphp4.a
-<Object name="default">
-.
-.
-.
-.#NOTE this next line should happen after all 'ObjectType' and before all 'AddL
-og' lines
-Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inik
-ey=value ...]
-.
-.
-</Object>
+ You may get a message telling you that libmodphp4.a is out of
+ date. If so, go to the src/modules/php4 directory inside your
+ Apache source directory and run this command: ranlib libmodphp4.a.
+ Then go back to the root of the Apache source directory and run
+ the above configure command again. That'll bring the link table up
+ to date. Run make and make install again.
+ 7. Copy and rename the php.ini-dist file to your bin directory from
+ your PHP 4 source directory: cp php.ini-dist
+ /usr/local/bin/php.ini or (if your don't have a local directory)
+ cp php.ini-dist /usr/bin/php.ini.
+ _________________________________________________________________
- (PHP >= 4.3.3) As additional parameters you can add some special
- php.ini-values, for example you can set a
- docroot="/path/to/docroot" specific to the context php4_execute is
- called. For boolean ini-keys please use 0/1 as value, not
- "On","Off",... (this will not work correctly), e.g.
- zlib.output_compression=1 instead of zlib.output_compression="On"
- 4. This is only needed if you want to configure a directory that only
- consists of PHP scripts (same like a cgi-bin directory):
+Compiling for MacOS X Client
-<Object name="x-httpd-php">
-ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
-Service fn=php4_execute [inikey=value inikey=value ...]
-</Object>
+ The following instructions will help you install a PHP module for the
+ Apache web server included in MacOS X. This version includes support
+ for the MySQL and PostgreSQL databases. These instructions are
+ graciously provided by Marc Liyanage.
- After that you can configure a directory in the Administration
- server and assign it the style x-httpd-php. All files in it will
- get executed as PHP. This is nice to hide PHP usage by renaming
- files to .html.
- 5. Setup of authentication: PHP authentication cannot be used with
- any other authentication. ALL AUTHENTICATION IS PASSED TO YOUR PHP
- SCRIPT. To configure PHP Authentication for the entire server, add
- the following line to your default object:
+ Warning
-<Object name="default">
-AuthTrans fn=php4_auth_trans
-.
-.
-.
-</Object>
+ Be careful when you do this, you could screw up your Apache web
+ server!
- 6. To use PHP Authentication on a single directory, add the
- following:
+ Do this to install:
-<Object ppath="d:\path\to\authenticated\dir\*">
-AuthTrans fn=php4_auth_trans
-</Object>
+ 1. Open a terminal window.
+ 2. Type wget
+ http://www.diax.ch/users/liyanage/software/macosx/libphp4.so.gz,
+ wait for the download to finish.
+ 3. Type gunzip libphp4.so.gz.
+ 4. Type sudo apxs -i -a -n php4 libphp4.so
+ 5. Now type sudo open -a TextEdit /etc/httpd/httpd.conf. TextEdit
+ will open with the web server configuration file. Locate these two
+ lines towards the end of the file: (Use the Find command)
- Note: The stacksize that PHP uses depends on the configuration of
- the webserver. If you get crashes with very large PHP scripts, it
- is recommended to raise it with the Admin Server (in the section
- "MAGNUS EDITOR").
+#AddType application/x-httpd-php .php
+#AddType application/x-httpd-php-source .phps
+
+ Remove the two hash marks (#), then save the file and quit
+ TextEdit.
+ 6. Finally, type sudo apachectl graceful to restart the web server.
+
+ PHP should now be up and running. You can test it by dropping a file
+ into your Sites folder which is called test.php. Into that file, write
+ this line: <?php phpinfo() ?>.
+
+ Now open up 127.0.0.1/~your_username/test.php in your web browser. You
+ should see a status table with information about the PHP module.
_________________________________________________________________
-CGI environment and recommended modifications in php.ini
+Chapter 4. Installation of PECL extensions
- Important when writing PHP scripts is the fact that Sun JSWS/Sun ONE
- WS/iPlanet/Netscape is a multithreaded web server. Because of that all
- requests are running in the same process space (the space of the
- webserver itself) and this space has only one environment. If you want
- to get CGI variables like PATH_INFO, HTTP_HOST etc. it is not the
- correct way to try this in the old PHP 3.x way with getenv() or a
- similar way (register globals to environment, $_ENV). You would only
- get the environment of the running webserver without any valid CGI
- variables!
+Introduction to PECL Installations
- Note: Why are there (invalid) CGI variables in the environment?
+ PHP extensions may be installed in a variety of ways. PECL is a
+ repository of PHP extensions living within the PEAR structure, and the
+ following demonstrates how to install these extensions.
- Answer: This is because you started the webserver process from the
- admin server which runs the startup script of the webserver, you
- wanted to start, as a CGI script (a CGI script inside of the admin
- server!). This is why the environment of the started webserver has
- some CGI environment variables in it. You can test this by starting
- the webserver not from the administration server. Use the command
- line as root user and start it manually - you will see there are no
- CGI-like environment variables.
+ These instructions assume /your/phpsrcdir/ is the path to the PHP
+ source, and extname is the name of the PECL extension. Adjust
+ accordingly. These instructions also assume a familiarity with the
+ pear command.
- Simply change your scripts to get CGI variables in the correct way for
- PHP 4.x by using the superglobal $_SERVER. If you have older scripts
- which use $HTTP_HOST, etc., you should turn on register_globals in
- php.ini and change the variable order too (important: remove "E" from
- it, because you do not need the environment here):
-variables_order = "GPCS"
-register_globals = On
+ Shared extensions may be installed by including them inside of php.ini
+ using the extension PHP directive. See also the extensions_dir
+ directive, and dl(). The installation methods described below do not
+ automatically configure PHP to include these extensions, this step
+ must be done manually.
+
+ When building PHP modules, it's important to have the appropriate
+ versions of the required tools (autoconf, automake, libtool, etc.) See
+ the Anonymous CVS Instructions for details on the required tools, and
+ required versions.
_________________________________________________________________
-Special use for error pages or self-made directory listings (PHP >= 4.3.3)
+Downloading PECL extensions
+
+ There are several options for downloading PECL extensions, such as:
+
+ * http://pecl.php.net
+ Listed here is information like the ChangeLog, release
+ information, requirements, revisions, etc. Although not every PECL
+ extension has a webpage, most do.
+ * pear download extname
+ The pear command may also be used to download source files.
+ Specific revisions may also be specified.
+ * CVS
+ All PECL files reside in CVS. A web-based view may be seen at
+ http://cvs.php.net/pecl/. To download straight from CVS, consider
+ the following where phpfi is the password for user cvsread:
+
+$ cvs -d:pserver:cvsread@cvs.php.net:/repository login
+$ cvs -d:pserver:cvsread@cvs.php.net:/repository co pecl/extname
+
+ * Windows downloads
+ Windows users may find compiled PECL binaries by downloading the
+ Collection of PECL modules from the PHP Downloads page, and by
+ retrieving a PECL Snapshot. To compile PHP under Windows, read the
+ Win32 Build README.
+ _________________________________________________________________
- You can use PHP to generate the error pages for "404 Not Found" or
- similar. Add the following line to the object in obj.conf for every
- error page you want to overwrite:
-Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value ini
-key=value...]
+PECL for Windows users
- where XXX is the HTTP error code. Please delete any other Error
- directives which could interfere with yours. If you want to place a
- page for all errors that could exist, leave the code parameter out.
- Your script can get the HTTP status code with $_SERVER['ERROR_TYPE'].
+ Like with any other PHP extension DLL, to install move the PECL
+ extension DLLs into the extension_dir folder and include them within
+ php.ini. For example:
- Another possibility is to generate self-made directory listings. Just
- create a PHP script which displays a directory listing and replace the
- corresponding default Service line for
- type="magnus-internal/directory" in obj.conf with the following:
-Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/scr
-ipt.php" [inikey=value inikey=value...]
+ extension=php_extname.dll
- For both error and directory listing pages the original URI and
- translated URI are in the variables $_SERVER['PATH_INFO'] and
- $_SERVER['PATH_TRANSLATED'].
+ After doing this, restart the web server.
_________________________________________________________________
-Note about nsapi_virtual() and subrequests (PHP >= 4.3.3)
+Compiling shared PECL extensions with PEAR
- The NSAPI module now supports the nsapi_virtual() function (alias:
- virtual()) to make subrequests on the webserver and insert the result
- in the webpage. This function uses some undocumented features from the
- NSAPI library. On Unix the module automatically looks for the needed
- functions and uses them if available. If not, nsapi_virtual() is
- disabled.
+ PEAR makes it easy to create shared PHP extensions. Using the pear
+ command, do the following:
- Note: But be warned: Support for nsapi_virtual() is EXPERIMENTAL!!!
- _________________________________________________________________
+ $ pear install extname
-CGI and commandline setups
+ That will download the source for extname, and compile it on the
+ system. This results in an extname.so file that may then be included
+ in php.ini
- The default is to build PHP as a CGI program. This creates a
- commandline interpreter, which can be used for CGI processing, or for
- non-web-related PHP scripting. If you are running a web server PHP has
- module support for, you should generally go for that solution for
- performance reasons. However, the CGI version enables users to run
- different PHP-enabled pages under different user-ids.
+ In case the systems preferred_state is set higher than an available
+ extname version, like it's set to stable and the extension is still in
+ beta, either alter the preferred_state via pear config-set or specify
+ a specific version of the PECL extension. For example:
- Warning
+ $ pear install extname-0.1.1
- By using the CGI setup, your server is open to several possible
- attacks. Please read our CGI security section to learn how to defend
- yourself from those attacks.
+ Regardless, pear will copy this extname.so into the extensions
+ directory. Adjust php.ini accordingly.
+ _________________________________________________________________
- As of PHP 4.3.0, some important additions have happened to PHP. A new
- SAPI named CLI also exists and it has the same name as the CGI binary.
- What is installed at {PREFIX}/bin/php depends on your configure line
- and this is described in detail in the manual section named Using PHP
- from the command line. For further details please read that section of
- the manual.
+Compiling shared PECL extensions with phpize
+
+ If using pear is not an option, like for building shared PECL
+ extensions from CVS, or for unreleased PECL packages, then creating a
+ shared extension may also be done by manually using the phpize
+ command. The pear command essentially does this but it may also be
+ done manually. Assuming the source file is named extname.tgz, and that
+ it was downloaded into the current directory, consider the following:
+
+$ pear download extname
+$ gzip -d < extname.tgz | tar -xvf -
+$ cd extname
+$ phpize
+$ ./configure && make
+
+ Upon success, this will create extname.so and put it into the modules/
+ and/or .libs/ directory within the extname/ source. Move this shared
+ extension (extname.so) into the PHP extensions directory, and adjust
+ php.ini accordingly.
_________________________________________________________________
-Testing
+Compiling PECL extensions statically into PHP
- If you have built PHP as a CGI program, you may test your build by
- typing make test. It is always a good idea to test your build. This
- way you may catch a problem with PHP on your platform early instead of
- having to struggle with it later.
- _________________________________________________________________
+ To statically include the extension within the PHP build, put the
+ extensions source into the ext/ directory found in the PHP source. For
+ example:
-Benchmarking
+$ cd /your/phpsrcdir/ext
+$ pear download extname
+$ gzip -d < extname.tgz | tar -xvf -
+$ mv extname-x.x.x extname
+$ rm package.xml
- If you have built PHP 3 as a CGI program, you may benchmark your build
- by typing make bench. Note that if safe mode is on by default, the
- benchmark may not be able to finish if it takes longer then the 30
- seconds allowed. This is because the set_time_limit() can not be used
- in safe mode. Use the max_execution_time configuration setting to
- control this time for your own scripts. make bench ignores the
- configuration file.
+ This will result in the following directory:
- Note: make bench is only available for PHP 3.
- _________________________________________________________________
+ /your/phpsrcdir/ext/extname
-Using Variables
+ From here, build PHP as normal:
- Some server supplied environment variables are not defined in the
- current CGI/1.1 specification. Only the following variables are
- defined there: AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE,
- GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING,
- REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD,
- SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL, and
- SERVER_SOFTWARE. Everything else should be treated as 'vendor
- extensions'.
+$ cd /your/phpsrcdir
+$ ./buildconf
+$ ./configure --help
+$ ./configure --with-extname --enable-someotherext --with-foobar
+$ make
+$ make install
+
+ Whether --enable-extname or --with-extname is used depends on the
+ extension. Typically an extension that does not require external
+ libraries uses --enable. To be sure, run the following after
+ buildconf:
+
+ $ ./configure --help | grep extname
_________________________________________________________________
-Chapter 4. Problems?
+Chapter 5. Problems?
Read the FAQ
reports!
_________________________________________________________________
-Chapter 5. Runtime Configuration
+Chapter 6. Runtime Configuration
The configuration file
filesystem if it exists.
The php.ini directives handled by extensions are documented
- respectively on the pages of the extensions themselfs. The list of the
- core directives is available in the appendix. Probably not all the PHP
- directives are documented in the manual though. For a completel list
- of directives available in your PHP version, please read your well
- commented php.ini file. Alternatively, you may find the the latest
- php.ini from CVS helpful too.
-
- Example 5-1. php.ini example
+ respectively on the pages of the extensions themselves. The list of
+ the core directives is available in the appendix. Probably not all the
+ PHP directives are documented in the manual though. For a completel
+ list of directives available in your PHP version, please read your
+ well commented php.ini file. Alternatively, you may find the the
+ latest php.ini from CVS helpful too.
+
+ Example 6-1. php.ini example
; any text on a line after an unquoted semicolon (;) is ignored
[php] ; section markers (text within square brackets) are also ignored
; Boolean values can be set to either:
php_admin_flag can not be overridden by .htaccess or
virtualhost directives.
- Example 5-2. Apache configuration example
+ Example 6-2. Apache configuration example
<IfModule mod_php5.c>
php_value include_path ".:/usr/local/lib/php"
php_admin_flag safe_mode on