diff --git a/INSTALL b/INSTALL index 7775bf7594b2..dcf56e4c786d 100644 --- a/INSTALL +++ b/INSTALL @@ -4,32 +4,41 @@ Installing PHP 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 @@ -87,127 +96,7 @@ Chapter 1. General Installation Considerations 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: . - - 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 @@ -235,475 +124,228 @@ Chapter 3. Installation on Unix systems * 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 \/mod_php-.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-. - * 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 @@ -752,7 +394,7 @@ Apache 2.0 on Unix systems 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 @@ -780,389 +422,931 @@ Apache 2.0 on Unix systems 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 + PHP4.so. Also make sure that + caudium/server/lib/[pike-version]/PHP4.so + 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): + + +. +. +. +.#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 ...] +. +. + + + (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): + + +ObjectType fn="force-type" type="magnus-internal/x-httpd-php" +Service fn=php4_execute [inikey=value inikey=value ...] + + + 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: + + +AuthTrans fn=php4_auth_trans +. +. +. + + + 6. To use PHP Authentication on a single directory, add the + following: + + +AuthTrans fn=php4_auth_trans + + + 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 \/mod_php-.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 - PHP4.so. Also make sure that - caudium/server/lib/[pike-version]/PHP4.so - 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-. + * 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 - -. -. -. -.#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 ...] -. -. - + 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 - -ObjectType fn="force-type" type="magnus-internal/x-httpd-php" -Service fn=php4_execute [inikey=value inikey=value ...] - + 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 - -AuthTrans fn=php4_auth_trans -. -. -. - + 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: - -AuthTrans fn=php4_auth_trans - + 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: . + + 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 @@ -1201,7 +1385,7 @@ Bug reports reports! _________________________________________________________________ -Chapter 5. Runtime Configuration +Chapter 6. Runtime Configuration The configuration file @@ -1224,14 +1408,14 @@ 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: @@ -1290,7 +1474,7 @@ Running PHP as an Apache module php_admin_flag can not be overridden by .htaccess or virtualhost directives. - Example 5-2. Apache configuration example + Example 6-2. Apache configuration example php_value include_path ".:/usr/local/lib/php" php_admin_flag safe_mode on