]> granicus.if.org Git - php/commitdiff
- Update INSTALL file (to add static instructions)
authorDerick Rethans <derick@php.net>
Wed, 1 Dec 2004 09:15:06 +0000 (09:15 +0000)
committerDerick Rethans <derick@php.net>
Wed, 1 Dec 2004 09:15:06 +0000 (09:15 +0000)
INSTALL

diff --git a/INSTALL b/INSTALL
index 7775bf7594b238ff9e2792b6e6764e8e30eb649a..dcf56e4c786d8e95a64a0415ca1ca8c7f99385b6 100644 (file)
--- 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: <?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
@@ -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 \<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
@@ -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
+    <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
 
@@ -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
 <IfModule mod_php5.c>
   php_value include_path ".:/usr/local/lib/php"
   php_admin_flag safe_mode on