Annotation of embedaddon/php/INSTALL, revision 1.1

1.1     ! misho       1:      __________________________________________________________________
        !             2: 
        !             3: Installing PHP
        !             4:      __________________________________________________________________
        !             5: 
        !             6:      * General Installation Considerations
        !             7:      * Installation on Unix systems
        !             8:           + Apache 1.3.x on Unix systems
        !             9:           + Apache 2.x on Unix systems
        !            10:           + Lighttpd 1.4 on Unix systems
        !            11:           + Sun, iPlanet and Netscape servers on Sun Solaris
        !            12:           + CGI and command line setups
        !            13:           + HP-UX specific installation notes
        !            14:           + OpenBSD installation notes
        !            15:           + Solaris specific installation tips
        !            16:           + Debian GNU/Linux installation notes
        !            17:      * Installation on Mac OS X
        !            18:           + Using Packages
        !            19:           + Using the bundled PHP
        !            20:           + Compiling PHP on Mac OS X
        !            21:      * Installation of PECL extensions
        !            22:           + Introduction to PECL Installations
        !            23:           + Downloading PECL extensions
        !            24:           + Installing a PHP extension on Windows
        !            25:           + Compiling shared PECL extensions with the pecl command
        !            26:           + Compiling shared PECL extensions with phpize
        !            27:           + Compiling PECL extensions statically into PHP
        !            28:      * Problems?
        !            29:           + Read the FAQ
        !            30:           + Other problems
        !            31:           + Bug reports
        !            32:      * Runtime Configuration
        !            33:           + The configuration file
        !            34:           + .user.ini files
        !            35:           + Where a configuration setting may be set
        !            36:           + How to change configuration settings
        !            37:      * Installation
        !            38:      __________________________________________________________________
        !            39: 
        !            40:      __________________________________________________________________
        !            41: 
        !            42: Preface
        !            43: 
        !            44:    These installation instructions were generated from the HTML version of
        !            45:    the  PHP  Manual  so  formatting and linking have been altered. See the
        !            46:    online and updated version at: http://php.net/install.unix
        !            47:      __________________________________________________________________
        !            48: 
        !            49: General Installation Considerations
        !            50: 
        !            51:    Before  starting  the  installation, first you need to know what do you
        !            52:    want  to  use  PHP for. There are three main fields you can use PHP, as
        !            53:    described in the What can PHP do? section:
        !            54:      * Websites and web applications (server-side scripting)
        !            55:      * Command line scripting
        !            56:      * Desktop (GUI) applications
        !            57: 
        !            58:    For  the first and most common form, you need three things: PHP itself,
        !            59:    a  web  server  and  a  web  browser.  You  probably already have a web
        !            60:    browser,  and  depending  on  your operating system setup, you may also
        !            61:    have  a  web server (e.g. Apache on Linux and MacOS X; IIS on Windows).
        !            62:    You  may  also  rent webspace at a company. This way, you don't need to
        !            63:    set  up anything on your own, only write your PHP scripts, upload it to
        !            64:    the server you rent, and see the results in your browser.
        !            65: 
        !            66:    In  case  of  setting  up  the server and PHP on your own, you have two
        !            67:    choices  for  the  method  of  connecting  PHP  to the server. For many
        !            68:    servers  PHP  has  a  direct module interface (also called SAPI). These
        !            69:    servers include Apache, Microsoft Internet Information Server, Netscape
        !            70:    and  iPlanet  servers.  Many  other servers have support for ISAPI, the
        !            71:    Microsoft  module  interface  (OmniHTTPd  for  example).  If PHP has no
        !            72:    module  support  for your web server, you can always use it as a CGI or
        !            73:    FastCGI  processor.  This  means  you set up your server to use the CGI
        !            74:    executable of PHP to process all PHP file requests on the server.
        !            75: 
        !            76:    If  you are also interested to use PHP for command line scripting (e.g.
        !            77:    write scripts autogenerating some images for you offline, or processing
        !            78:    text  files  depending  on some arguments you pass to them), you always
        !            79:    need  the  command  line  executable.  For  more  information, read the
        !            80:    section  about writing command line PHP applications. In this case, you
        !            81:    need no server and no browser.
        !            82: 
        !            83:    With  PHP you can also write desktop GUI applications using the PHP-GTK
        !            84:    extension.  This  is  a  completely different approach than writing web
        !            85:    pages,  as  you  do not output any HTML, but manage windows and objects
        !            86:    within  them.  For  more information about PHP-GTK, please » visit the
        !            87:    site  dedicated  to  this  extension.  PHP-GTK  is  not included in the
        !            88:    official PHP distribution.
        !            89: 
        !            90:    From  now on, this section deals with setting up PHP for web servers on
        !            91:    Unix and Windows with server module interfaces and CGI executables. You
        !            92:    will  also  find  information  on  the  command  line executable in the
        !            93:    following sections.
        !            94: 
        !            95:    PHP source code and binary distributions for Windows can be found at »
        !            96:    http://www.php.net/downloads.php. We recommend you to choose a » mirror
        !            97:    nearest to you for downloading the distributions.
        !            98:      __________________________________________________________________
        !            99:      __________________________________________________________________
        !           100: 
        !           101: Installation on Unix systems
        !           102: 
        !           103: Table of Contents
        !           104: 
        !           105:      * Apache 1.3.x on Unix systems
        !           106:      * Apache 2.x on Unix systems
        !           107:      * Lighttpd 1.4 on Unix systems
        !           108:      * Sun, iPlanet and Netscape servers on Sun Solaris
        !           109:      * CGI and command line setups
        !           110:      * HP-UX specific installation notes
        !           111:      * OpenBSD installation notes
        !           112:      * Solaris specific installation tips
        !           113:      * Debian GNU/Linux installation notes
        !           114: 
        !           115:    This  section  will  guide  you  through  the general configuration and
        !           116:    installation  of  PHP  on  Unix  systems.  Be  sure  to investigate any
        !           117:    sections  specific  to your platform or web server before you begin the
        !           118:    process.
        !           119: 
        !           120:    As  our  manual  outlines  in  the  General Installation Considerations
        !           121:    section,  we  are mainly dealing with web centric setups of PHP in this
        !           122:    section,  although  we will cover setting up PHP for command line usage
        !           123:    as well.
        !           124: 
        !           125:    There  are  several  ways  to install PHP for the Unix platform, either
        !           126:    with  a  compile and configure process, or through various pre-packaged
        !           127:    methods.  This  documentation  is  mainly focused around the process of
        !           128:    compiling and configuring PHP. Many Unix like systems have some sort of
        !           129:    package  installation  system. This can assist in setting up a standard
        !           130:    configuration,  but  if  you  need  to have a different set of features
        !           131:    (such as a secure server, or a different database driver), you may need
        !           132:    to  build  PHP  and/or  your  web  server.  If  you are unfamiliar with
        !           133:    building  and  compiling your own software, it is worth checking to see
        !           134:    whether  somebody  has already built a packaged version of PHP with the
        !           135:    features you need.
        !           136: 
        !           137:    Prerequisite knowledge and software for compiling:
        !           138:      * Basic Unix skills (being able to operate "make" and a C compiler)
        !           139:      * An ANSI C compiler
        !           140:      * A web server
        !           141:      * Any module specific components (such as GD, PDF libs, etc.)
        !           142: 
        !           143:    When  building  directly from SVN sources or after custom modifications
        !           144:    you might also need:
        !           145:      * autoconf: 2.13
        !           146:      * automake: 1.4+
        !           147:      * libtool: 1.4.x+ (except 1.4.2)
        !           148:      * re2c: Version 0.13.4 or newer
        !           149:      * flex: Version 2.5.4 (for PHP <= 5.2)
        !           150:      * bison: Version 1.28 (preferred), 1.35, or 1.75
        !           151: 
        !           152:    The  initial  PHP  setup and configuration process is controlled by the
        !           153:    use  of the command line options of the configure script. You could get
        !           154:    a  list  of all available options along with short explanations running
        !           155:    ./configure   --help.   Our  manual  documents  the  different  options
        !           156:    separately.  You  will find the core options in the appendix, while the
        !           157:    different  extension  specific  options  are  descibed on the reference
        !           158:    pages.
        !           159: 
        !           160:    When  PHP  is  configured,  you  are  ready  to build the module and/or
        !           161:    executables. The command make should take care of this. If it fails and
        !           162:    you can't figure out why, see the Problems section.
        !           163:      __________________________________________________________________
        !           164: 
        !           165: Apache 1.3.x on Unix systems
        !           166: 
        !           167:    This  section  contains  notes and hints specific to Apache installs of
        !           168:    PHP on Unix platforms. We also have instructions and notes for Apache 2
        !           169:    on a separate page.
        !           170: 
        !           171:    You  can select arguments to add to the configure on line 10 below from
        !           172:    the  list of core configure options and from extension specific options
        !           173:    described  at  the respective places in the manual. The version numbers
        !           174:    have  been  omitted here, to ensure the instructions are not incorrect.
        !           175:    You  will  need  to replace the 'xxx' here with the correct values from
        !           176:    your files.
        !           177: 
        !           178:    Example #1 Installation Instructions (Apache Shared Module Version) for
        !           179:    PHP
        !           180: 1.  gunzip apache_xxx.tar.gz
        !           181: 2.  tar -xvf apache_xxx.tar
        !           182: 3.  gunzip php-xxx.tar.gz
        !           183: 4.  tar -xvf php-xxx.tar
        !           184: 5.  cd apache_xxx
        !           185: 6.  ./configure --prefix=/www --enable-module=so
        !           186: 7.  make
        !           187: 8.  make install
        !           188: 9.  cd ../php-xxx
        !           189: 
        !           190: 10. Now, configure your PHP.  This is where you customize your PHP
        !           191:     with various options, like which extensions will be enabled.  Do a
        !           192:     ./configure --help for a list of available options.  In our example
        !           193:     we'll do a simple configure with Apache 1 and MySQL support.  Your
        !           194:     path to apxs may differ from our example.
        !           195: 
        !           196:       ./configure --with-mysql --with-apxs=/www/bin/apxs
        !           197: 
        !           198: 11. make
        !           199: 12. make install
        !           200: 
        !           201:     If you decide to change your configure options after installation,
        !           202:     you only need to repeat the last three steps. You only need to
        !           203:     restart apache for the new module to take effect. A recompile of
        !           204:     Apache is not needed.
        !           205: 
        !           206:     Note that unless told otherwise, 'make install' will also install PEAR,
        !           207:     various PHP tools such as phpize, install the PHP CLI, and more.
        !           208: 
        !           209: 13. Setup your php.ini file:
        !           210: 
        !           211:       cp php.ini-development /usr/local/lib/php.ini
        !           212: 
        !           213:     You may edit your .ini file to set PHP options.  If you prefer your
        !           214:     php.ini in another location, use --with-config-file-path=/some/path in
        !           215:     step 10.
        !           216: 
        !           217:     If you instead choose php.ini-production, be certain to read the list
        !           218:     of changes within, as they affect how PHP behaves.
        !           219: 
        !           220: 14. Edit your httpd.conf to load the PHP module.  The path on the right hand
        !           221:     side of the LoadModule statement must point to the path of the PHP
        !           222:     module on your system.  The make install from above may have already
        !           223:     added this for you, but be sure to check.
        !           224: 
        !           225:       LoadModule php5_module libexec/libphp5.so
        !           226: 
        !           227: 15. And in the AddModule section of httpd.conf, somewhere under the
        !           228:     ClearModuleList, add this:
        !           229: 
        !           230:       AddModule mod_php5.c
        !           231: 
        !           232: 16. Tell Apache to parse certain extensions as PHP.  For example,
        !           233:     let's have Apache parse the .php extension as PHP.  You could
        !           234:     have any extension(s) parse as PHP by simply adding more, with
        !           235:     each separated by a space.  We'll add .phtml to demonstrate.
        !           236: 
        !           237:       AddType application/x-httpd-php .php .phtml
        !           238: 
        !           239:     It's also common to setup the .phps extension to show highlighted PHP
        !           240:     source, this can be done with:
        !           241: 
        !           242:       AddType application/x-httpd-php-source .phps
        !           243: 
        !           244: 17. Use your normal procedure for starting the Apache server. (You must
        !           245:     stop and restart the server, not just cause the server to reload by
        !           246:     using a HUP or USR1 signal.)
        !           247: 
        !           248:    Alternatively, to install PHP as a static object:
        !           249: 
        !           250:    Example  #2  Installation  Instructions (Static Module Installation for
        !           251:    Apache) for PHP
        !           252: 1.  gunzip -c apache_1.3.x.tar.gz | tar xf -
        !           253: 2.  cd apache_1.3.x
        !           254: 3.  ./configure
        !           255: 4.  cd ..
        !           256: 
        !           257: 5.  gunzip -c php-5.x.y.tar.gz | tar xf -
        !           258: 6.  cd php-5.x.y
        !           259: 7.  ./configure --with-mysql --with-apache=../apache_1.3.x
        !           260: 8.  make
        !           261: 9.  make install
        !           262: 
        !           263: 10. cd ../apache_1.3.x
        !           264: 
        !           265: 11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
        !           266:     (The above line is correct! Yes, we know libphp5.a does not exist at this
        !           267:     stage. It isn't supposed to. It will be created.)
        !           268: 
        !           269: 12. make
        !           270:     (you should now have an httpd binary which you can copy to your Apache bin d
        !           271: ir if
        !           272:     it is your first install then you need to "make install" as well)
        !           273: 
        !           274: 13. cd ../php-5.x.y
        !           275: 14. cp php.ini-development /usr/local/lib/php.ini
        !           276: 
        !           277: 15. You can edit /usr/local/lib/php.ini file to set PHP options.
        !           278:     Edit your httpd.conf or srm.conf file and add:
        !           279:     AddType application/x-httpd-php .php
        !           280: 
        !           281:    Depending  on  your  Apache  install  and  Unix variant, there are many
        !           282:    possible  ways  to  stop and restart the server. Below are some typical
        !           283:    lines   used  in  restarting  the  server,  for  different  apache/unix
        !           284:    installations.  You  should  replace  /path/to/  with the path to these
        !           285:    applications on your systems.
        !           286: 
        !           287:    Example #3 Example commands for restarting Apache
        !           288: 1. Several Linux and SysV variants:
        !           289: /etc/rc.d/init.d/httpd restart
        !           290: 
        !           291: 2. Using apachectl scripts:
        !           292: /path/to/apachectl stop
        !           293: /path/to/apachectl start
        !           294: 
        !           295: 3. httpdctl and httpsdctl (Using OpenSSL), similar to apachectl:
        !           296: /path/to/httpsdctl stop
        !           297: /path/to/httpsdctl start
        !           298: 
        !           299: 4. Using mod_ssl, or another SSL server, you may want to manually
        !           300: stop and start:
        !           301: /path/to/apachectl stop
        !           302: /path/to/apachectl startssl
        !           303: 
        !           304:    The  locations of the apachectl and http(s)dctl binaries often vary. If
        !           305:    your  system  has locate or whereis or which commands, these can assist
        !           306:    you in finding your server control programs.
        !           307: 
        !           308:    Different examples of compiling PHP for apache are as follows:
        !           309: ./configure --with-apxs --with-pgsql
        !           310: 
        !           311:    This will create a libphp5.so shared library that is loaded into Apache
        !           312:    using  a  LoadModule  line  in Apache's httpd.conf file. The PostgreSQL
        !           313:    support is embedded into this library.
        !           314: 
        !           315: ./configure --with-apxs --with-pgsql=shared
        !           316: 
        !           317:    This  will  create  a libphp5.so shared library for Apache, but it will
        !           318:    also create a pgsql.so shared library that is loaded into PHP either by
        !           319:    using  the  extension  directive  in  php.ini  file  or  by  loading it
        !           320:    explicitly in a script using the dl() function.
        !           321: 
        !           322: ./configure --with-apache=/path/to/apache_source --with-pgsql
        !           323: 
        !           324:    This  will  create  a  libmodphp5.a  library,  a  mod_php5.c  and  some
        !           325:    accompanying files and copy this into the src/modules/php5 directory in
        !           326:    the    Apache    source   tree.   Then   you   compile   Apache   using
        !           327:    --activate-module=src/modules/php5/libphp5.a   and   the  Apache  build
        !           328:    system  will  create  libphp5.a  and  link it statically into the httpd
        !           329:    binary.  The  PostgreSQL  support  is included directly into this httpd
        !           330:    binary, so the final result here is a single httpd binary that includes
        !           331:    all of Apache and all of PHP.
        !           332: 
        !           333: ./configure --with-apache=/path/to/apache_source --with-pgsql=shared
        !           334: 
        !           335:    Same as before, except instead of including PostgreSQL support directly
        !           336:    into  the  final  httpd you will get a pgsql.so shared library that you
        !           337:    can load into PHP from either the php.ini file or directly using dl().
        !           338: 
        !           339:    When  choosing  to build PHP in different ways, you should consider the
        !           340:    advantages  and  drawbacks  of each method. Building as a shared object
        !           341:    will  mean  that  you  can compile apache separately, and don't have to
        !           342:    recompile  everything  as you add to, or change, PHP. Building PHP into
        !           343:    apache  (static  method)  means  that PHP will load and run faster. For
        !           344:    more information, see the Apache » web page on DSO support.
        !           345: 
        !           346:      Note:
        !           347: 
        !           348:      Apache's  default  httpd.conf  currently  ships  with a section that
        !           349:      looks like this:
        !           350: 
        !           351: User nobody
        !           352: Group "#-1"
        !           353: 
        !           354:      Unless  you  change  that  to "Group nogroup" or something like that
        !           355:      ("Group  daemon"  is  also very common) PHP will not be able to open
        !           356:      files.
        !           357: 
        !           358:      Note:
        !           359: 
        !           360:      Make  sure  you  specify  the  installed  version of apxs when using
        !           361:      --with-apxs=/path/to/apxs  .  You must NOT use the apxs version that
        !           362:      is  in  the apache sources but the one that is actually installed on
        !           363:      your system.
        !           364:      __________________________________________________________________
        !           365:      __________________________________________________________________
        !           366: 
        !           367: Apache 2.x on Unix systems
        !           368: 
        !           369:    This  section  contains notes and hints specific to Apache 2.x installs
        !           370:    of PHP on Unix systems.
        !           371:    Warning
        !           372: 
        !           373:    We  do  not recommend using a threaded MPM in production with Apache 2.
        !           374:    Use  the prefork MPM, which is the default MPM with Apache 2.0 and 2.2.
        !           375:    For  information  on  why,  read the related FAQ entry on using Apache2
        !           376:    with a threaded MPM
        !           377: 
        !           378:    The  »  Apache  Documentation  is  the  most  authoritative  source of
        !           379:    information   on   the   Apache  2.x  server.  More  information  about
        !           380:    installation options for Apache may be found there.
        !           381: 
        !           382:    The  most  recent version of Apache HTTP Server may be obtained from »
        !           383:    Apache  download  site,  and  a  fitting  PHP  version  from  the above
        !           384:    mentioned  places.  This  quick  guide  covers  only  the basics to get
        !           385:    started with Apache 2.x and PHP. For more information read the » Apache
        !           386:    Documentation.  The  version  numbers have been omitted here, to ensure
        !           387:    the  instructions are not incorrect. In the examples below, 'NN' should
        !           388:    be replaced with the specific version of Apache being used.
        !           389: 
        !           390:    There  are  currently two versions of Apache 2.x - there's 2.0 and 2.2.
        !           391:    While  there  are various reasons for choosing each, 2.2 is the current
        !           392:    latest  version,  and  the  one  that is recommended, if that option is
        !           393:    available  to  you. However, the instructions here will work for either
        !           394:    2.0 or 2.2.
        !           395:     1. Obtain  the  Apache HTTP server from the location listed above, and
        !           396:        unpack it:
        !           397: gzip -d httpd-2_x_NN.tar.gz
        !           398: tar -xf httpd-2_x_NN.tar
        !           399: 
        !           400:     2. Likewise, obtain and unpack the PHP source:
        !           401: gunzip php-NN.tar.gz
        !           402: tar -xf php-NN.tar
        !           403: 
        !           404:     3. Build  and install Apache. Consult the Apache install documentation
        !           405:        for more details on building Apache.
        !           406: cd httpd-2_x_NN
        !           407: ./configure --enable-so
        !           408: make
        !           409: make install
        !           410: 
        !           411:     4. Now  you  have  Apache  2.x.NN  available under /usr/local/apache2,
        !           412:        configured  with  loadable  module  support  and  the  standard MPM
        !           413:        prefork.  To  test  the  installation use your normal procedure for
        !           414:        starting the Apache server, e.g.:
        !           415: /usr/local/apache2/bin/apachectl start
        !           416: 
        !           417:        and stop the server to go on with the configuration for PHP:
        !           418: /usr/local/apache2/bin/apachectl stop
        !           419: 
        !           420:     5. Now,  configure and build PHP. This is where you customize PHP with
        !           421:        various  options,  like  which  extensions  will  be  enabled.  Run
        !           422:        ./configure  --help for a list of available options. In our example
        !           423:        we'll do a simple configure with Apache 2 and MySQL support.
        !           424:        If  you  built  Apache  from  source, as described above, the below
        !           425:        example  will match your path for apxs, but if you installed Apache
        !           426:        some other way, you'll need to adjust the path to apxs accordingly.
        !           427:        Note that some distros may rename apxs to apxs2.
        !           428: cd ../php-NN
        !           429: ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
        !           430: make
        !           431: make install
        !           432: 
        !           433:        If  you decide to change your configure options after installation,
        !           434:        you'll  need to re-run the configure, make, and make install steps.
        !           435:        You  only need to restart apache for the new module to take effect.
        !           436:        A recompile of Apache is not needed.
        !           437:        Note  that  unless told otherwise, 'make install' will also install
        !           438:        PEAR,  various  PHP  tools such as phpize, install the PHP CLI, and
        !           439:        more.
        !           440:     6. Setup your php.ini
        !           441: cp php.ini-development /usr/local/lib/php.ini
        !           442: 
        !           443:        You  may  edit  your  .ini  file  to set PHP options. If you prefer
        !           444:        having php.ini in another location, use
        !           445:        --with-config-file-path=/some/path in step 5.
        !           446:        If  you  instead  choose php.ini-production, be certain to read the
        !           447:        list of changes within, as they affect how PHP behaves.
        !           448:     7. Edit  your httpd.conf to load the PHP module. The path on the right
        !           449:        hand side of the LoadModule statement must point to the path of the
        !           450:        PHP  module  on  your  system. The make install from above may have
        !           451:        already added this for you, but be sure to check.
        !           452: LoadModule php5_module modules/libphp5.so
        !           453:     8. Tell  Apache to parse certain extensions as PHP. For example, let's
        !           454:        have  Apache  parse  .php  files  as PHP. Instead of only using the
        !           455:        Apache  AddType  directive,  we want to avoid potentially dangerous
        !           456:        uploads  and  created  files  such  as  exploit.php.jpg  from being
        !           457:        executed   as   PHP.   Using  this  example,  you  could  have  any
        !           458:        extension(s)  parse as PHP by simply adding them. We'll add .php to
        !           459:        demonstrate.
        !           460: <FilesMatch \.php$>
        !           461:     SetHandler application/x-httpd-php
        !           462: </FilesMatch>
        !           463:        Or,  if we wanted to allow .php, .php2, .php3, .php4, .php5, .php6,
        !           464:        and  .phtml files to be executed as PHP, but nothing else, we'd use
        !           465:        this:
        !           466: <FilesMatch "\.ph(p[2-6]?|tml)$">
        !           467:     SetHandler application/x-httpd-php
        !           468: </FilesMatch>
        !           469:        And  to  allow  .phps files to be handled by the php source filter,
        !           470:        and displayed as syntax-highlighted source code, use this:
        !           471: <FilesMatch "\.phps$">
        !           472:     SetHandler application/x-httpd-php-source
        !           473: </FilesMatch>
        !           474:        mod_rewrite  may  be  used  To  allow any arbitrary .php file to be
        !           475:        displayed  as  syntax-highlighted  source  code,  without having to
        !           476:        rename or copy it to a .phps file:
        !           477: RewriteEngine On
        !           478: RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
        !           479:        The  php source filter should not be enabled on production systems,
        !           480:        where it may expose confidential or otherwise sensitive information
        !           481:        embedded in source code.
        !           482:     9. Use your normal procedure for starting the Apache server, e.g.:
        !           483: /usr/local/apache2/bin/apachectl start
        !           484: 
        !           485:        OR
        !           486: service httpd restart
        !           487: 
        !           488:    Following  the  steps  above you will have a running Apache2 web server
        !           489:    with  support  for  PHP as a SAPI module. Of course there are many more
        !           490:    configuration  options  available  Apache and PHP. For more information
        !           491:    type ./configure --help in the corresponding source tree.
        !           492: 
        !           493:    Apache  may  be built multithreaded by selecting the worker MPM, rather
        !           494:    than  the  standard  prefork MPM, when Apache is built. This is done by
        !           495:    adding  the  following option to the argument passed to ./configure, in
        !           496:    step 3 above:
        !           497:    --with-mpm=worker
        !           498: 
        !           499:    This  should  not be undertaken without being aware of the consequences
        !           500:    of  this  decision,  and  having  at  least a fair understanding of the
        !           501:    implications.   The   Apache  documentation  regarding  »  MPM-Modules
        !           502:    discusses MPMs in a great deal more detail.
        !           503: 
        !           504:      Note:
        !           505: 
        !           506:      The Apache MultiViews FAQ discusses using multiviews with PHP.
        !           507: 
        !           508:      Note:
        !           509: 
        !           510:      To  build  a multithreaded version of Apache, the target system must
        !           511:      support  threads.  In  this  case,  PHP  should  also  be built with
        !           512:      experimental Zend Thread Safety (ZTS). Under this configuration, not
        !           513:      all  extensions will be available. The recommended setup is to build
        !           514:      Apache with the default prefork MPM-Module.
        !           515:      __________________________________________________________________
        !           516:      __________________________________________________________________
        !           517: 
        !           518: Lighttpd 1.4 on Unix systems
        !           519: 
        !           520:    This section contains notes and hints specific to Lighttpd 1.4 installs
        !           521:    of PHP on Unix systems.
        !           522: 
        !           523:    Please  use  the  »  Lighttpd  trac  to  learn how to install Lighttpd
        !           524:    properly before continuing.
        !           525: 
        !           526:    Fastcgi  is  the preferred SAPI to connect PHP and Lighttpd. Fastcgi is
        !           527:    automagically  enabled  in  php-cgi  in PHP 5.3, but for older versions
        !           528:    configure  PHP  with  --enable-fastcgi. To confirm that PHP has fastcgi
        !           529:    enabled,  php  -v should contain PHP 5.2.5 (cgi-fcgi) Before PHP 5.2.3,
        !           530:    fastcgi was enabled on the php binary (there was no php-cgi).
        !           531: 
        !           532: Letting Lighttpd spawn php processes
        !           533: 
        !           534:    To  configure  Lighttpd  to connect to php and spawn fastcgi processes,
        !           535:    edit  lighttpd.conf.  Sockets  are  preferred  to  connect  to  fastcgi
        !           536:    processes on the local system.
        !           537: 
        !           538:    Example #1 Partial lighttpd.conf
        !           539: server.modules += ( "mod_fastcgi" )
        !           540: 
        !           541: fastcgi.server = ( ".php" =>
        !           542:   ((
        !           543:     "socket" => "/tmp/php.socket",
        !           544:     "bin-path" => "/usr/local/bin/php-cgi",
        !           545:     "bin-environment" => (
        !           546:       "PHP_FCGI_CHILDREN" => "16",
        !           547:       "PHP_FCGI_MAX_REQUESTS" => "10000"
        !           548:     ),
        !           549:     "min-procs" => 1,
        !           550:     "max-procs" => 1,
        !           551:     "idle-timeout" => 20
        !           552:   ))
        !           553: )
        !           554: 
        !           555:    The  bin-path  directive  allows  lighttpd  to  spawn fastcgi processes
        !           556:    dynamically. PHP will spawn children according to the PHP_FCGI_CHILDREN
        !           557:    environment   variable.   The   "bin-environment"  directive  sets  the
        !           558:    environment  for  the  spawned processes. PHP will kill a child process
        !           559:    after  the  number  of  requests  specified by PHP_FCGI_MAX_REQUESTS is
        !           560:    reached. The directives "min-procs" and "max-procs" should generally be
        !           561:    avoided  with  PHP. PHP manages its own children and opcode caches like
        !           562:    APC  will  only  share among children managed by PHP. If "min-procs" is
        !           563:    set  to  something  greater  than 1, the total number of php responders
        !           564:    will  be  multiplied PHP_FCGI_CHILDREN (2 min-procs * 16 children gives
        !           565:    32 responders).
        !           566: 
        !           567: Spawning with spawn-fcgi
        !           568: 
        !           569:    Lighttpd  provides  a  program called spawn-fcgi to ease the process of
        !           570:    spawning fastcgi processes easier.
        !           571: 
        !           572: Spawning php-cgi
        !           573: 
        !           574:    It  is  possible to spawn processes without spawn-fcgi, though a bit of
        !           575:    heavy-lifting  is  required.  Setting the PHP_FCGI_CHILDREN environment
        !           576:    var  controls  how  many  children  PHP  will  spawn to handle incoming
        !           577:    requests.  Setting  PHP_FCGI_MAX_REQUESTS  will  determine how long (in
        !           578:    requests)  each  child  will  live. Here's a simple bash script to help
        !           579:    spawn php responders.
        !           580: 
        !           581:    Example #2 Spawning FastCGI Responders
        !           582: #!/bin/sh
        !           583: 
        !           584: # Location of the php-cgi binary
        !           585: PHP=/usr/local/bin/php-cgi
        !           586: 
        !           587: # PID File location
        !           588: PHP_PID=/tmp/php.pid
        !           589: 
        !           590: # Binding to an address
        !           591: #FCGI_BIND_ADDRESS=10.0.1.1:10000
        !           592: # Binding to a domain socket
        !           593: FCGI_BIND_ADDRESS=/tmp/php.sock
        !           594: 
        !           595: PHP_FCGI_CHILDREN=16
        !           596: PHP_FCGI_MAX_REQUESTS=10000
        !           597: 
        !           598: env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \
        !           599:        PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \
        !           600:        $PHP -b $FCGI_BIND_ADDRESS &
        !           601: 
        !           602: echo $! > "$PHP_PID"
        !           603: 
        !           604: 
        !           605: Connecting to remote FCGI instances
        !           606: 
        !           607:    Fastcgi  instances  can be spawned on multiple remote machines in order
        !           608:    to scale applications.
        !           609: 
        !           610:    Example #3 Connecting to remote php-fastcgi instances
        !           611: fastcgi.server = ( ".php" =>
        !           612:    (( "host" => "10.0.0.2", "port" => 1030 ),
        !           613:     ( "host" => "10.0.0.3", "port" => 1030 ))
        !           614: )
        !           615:      __________________________________________________________________
        !           616:      __________________________________________________________________
        !           617: 
        !           618: Sun, iPlanet and Netscape servers on Sun Solaris
        !           619: 
        !           620:    This  section  contains notes and hints specific to Sun Java System Web
        !           621:    Server, Sun ONE Web Server, iPlanet and Netscape server installs of PHP
        !           622:    on Sun Solaris.
        !           623: 
        !           624:    From  PHP  4.3.3  on  you  can use PHP scripts with the NSAPI module to
        !           625:    generate   custom   directory  listings  and  error  pages.  Additional
        !           626:    functions  for  Apache compatibility are also available. For support in
        !           627:    current web servers read the note about subrequests.
        !           628: 
        !           629:    You  can  find  more  information about setting up PHP for the Netscape
        !           630:    Enterprise Server (NES) here: »
        !           631:    http://benoit.noss.free.fr/php/install-php4.html
        !           632: 
        !           633:    To  build  PHP  with  Sun JSWS/Sun ONE WS/iPlanet/Netscape web servers,
        !           634:    enter  the  proper install directory for the --with-nsapi=[DIR] option.
        !           635:    The  default directory is usually /opt/netscape/suitespot/. Please also
        !           636:    read /php-xxx-version/sapi/nsapi/nsapi-readme.txt.
        !           637: 
        !           638:     1. Install  the following packages from » http://www.sunfreeware.com/
        !           639:        or another download site:
        !           640:           + autoconf-2.13
        !           641:           + automake-1.4
        !           642:           + bison-1_25-sol26-sparc-local
        !           643:           + flex-2_5_4a-sol26-sparc-local
        !           644:           + gcc-2_95_2-sol26-sparc-local
        !           645:           + gzip-1.2.4-sol26-sparc-local
        !           646:           + m4-1_4-sol26-sparc-local
        !           647:           + make-3_76_1-sol26-sparc-local
        !           648:           + mysql-3.23.24-beta (if you want mysql support)
        !           649:           + perl-5_005_03-sol26-sparc-local
        !           650:           + tar-1.13 (GNU tar)
        !           651:     2. Make    sure    your   path   includes   the   proper   directories
        !           652:        PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin  and  make it
        !           653:        available to your system export PATH.
        !           654:     3. gunzip  php-x.x.x.tar.gz  (if  you have a .gz dist, otherwise go to
        !           655:        4).
        !           656:     4. tar xvf php-x.x.x.tar
        !           657:     5. Change to your extracted PHP directory: cd ../php-x.x.x
        !           658:     6. For the following step, make sure /opt/netscape/suitespot/ is where
        !           659:        your netscape server is installed. Otherwise, change to the correct
        !           660:        path and run:
        !           661: ./configure --with-mysql=/usr/local/mysql \
        !           662: --with-nsapi=/opt/netscape/suitespot/ \
        !           663: --enable-libgcc
        !           664:     7. Run make followed by make install.
        !           665: 
        !           666:    After  performing  the  base install and reading the appropriate readme
        !           667:    file, you may need to perform some additional configuration steps.
        !           668: 
        !           669: Configuration Instructions for Sun/iPlanet/Netscape
        !           670: 
        !           671:    Firstly  you  may  need  to  add  some  paths  to  the  LD_LIBRARY_PATH
        !           672:    environment  for  the server to find all the shared libs. This can best
        !           673:    done in the start script for your web server. The start script is often
        !           674:    located  in:  /path/to/server/https-servername/start. You may also need
        !           675:    to    edit    the    configuration   files   that   are   located   in:
        !           676:    /path/to/server/https-servername/config/.
        !           677:     1. Add  the  following  line  to  mime.types  (you  can do that by the
        !           678:        administration server):
        !           679: type=magnus-internal/x-httpd-php exts=php
        !           680: 
        !           681:     2. Edit  magnus.conf  (for servers >= 6) or obj.conf (for servers < 6)
        !           682:        and add the following, shlib will vary depending on your system, it
        !           683:        will  be something like /opt/netscape/suitespot/bin/libphp4.so. You
        !           684:        should place the following lines after mime types init.
        !           685: Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/op
        !           686: t/netscape/suitespot/bin/libphp4.so"
        !           687: Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_
        !           688: ini="/path/to/php.ini"]
        !           689: 
        !           690:        (PHP  >=  4.3.3)  The php_ini parameter is optional but with it you
        !           691:        can place your php.ini in your web server config directory.
        !           692:     3. Configure  the  default  object  in  obj.conf  (for  virtual server
        !           693:        classes [version 6.0+] in their vserver.obj.conf):
        !           694: <Object name="default">
        !           695: .
        !           696: .
        !           697: .
        !           698: .#NOTE this next line should happen after all 'ObjectType' and before all 'AddLo
        !           699: g' lines
        !           700: Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inike
        !           701: y=value ...]
        !           702: .
        !           703: .
        !           704: </Object>
        !           705: 
        !           706:        (PHP  >=  4.3.3)  As additional parameters you can add some special
        !           707:        php.ini-values, for example you can set a
        !           708:        docroot="/path/to/docroot"  specific to the context php4_execute is
        !           709:        called.   For  boolean  ini-keys  please  use  0/1  as  value,  not
        !           710:        "On","Off",...    (this    will    not    work   correctly),   e.g.
        !           711:        zlib.output_compression=1 instead of zlib.output_compression="On"
        !           712:     4. This  is only needed if you want to configure a directory that only
        !           713:        consists of PHP scripts (same like a cgi-bin directory):
        !           714: <Object name="x-httpd-php">
        !           715: ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
        !           716: Service fn=php4_execute [inikey=value inikey=value ...]
        !           717: </Object>
        !           718: 
        !           719:        After  that  you  can  configure  a directory in the Administration
        !           720:        server  and  assign  it the style x-httpd-php. All files in it will
        !           721:        get  executed  as  PHP.  This is nice to hide PHP usage by renaming
        !           722:        files to .html.
        !           723:     5. Setup of authentication: PHP authentication cannot be used with any
        !           724:        other  authentication.  ALL  AUTHENTICATION  IS  PASSED TO YOUR PHP
        !           725:        SCRIPT.  To configure PHP Authentication for the entire server, add
        !           726:        the following line to your default object:
        !           727: <Object name="default">
        !           728: AuthTrans fn=php4_auth_trans
        !           729: .
        !           730: .
        !           731: .
        !           732: </Object>
        !           733: 
        !           734:     6. To use PHP Authentication on a single directory, add the following:
        !           735: <Object ppath="d:\path\to\authenticated\dir\*">
        !           736: AuthTrans fn=php4_auth_trans
        !           737: </Object>
        !           738: 
        !           739:      Note:
        !           740: 
        !           741:      The  stacksize that PHP uses depends on the configuration of the web
        !           742:      server.  If  you  get  crashes  with  very  large PHP scripts, it is
        !           743:      recommended  to  raise  it  with  the  Admin  Server (in the section
        !           744:      "MAGNUS EDITOR").
        !           745: 
        !           746: CGI environment and recommended modifications in php.ini
        !           747: 
        !           748:    Important  when  writing  PHP scripts is the fact that Sun JSWS/Sun ONE
        !           749:    WS/iPlanet/Netscape  is a multithreaded web server. Because of that all
        !           750:    requests  are  running  in the same process space (the space of the web
        !           751:    server  itself) and this space has only one environment. If you want to
        !           752:    get  CGI variables like PATH_INFO, HTTP_HOST etc. it is not the correct
        !           753:    way  to  try  this  in  the  old PHP way with getenv() or a similar way
        !           754:    (register  globals  to  environment,  $_ENV).  You  would  only get the
        !           755:    environment of the running web server without any valid CGI variables!
        !           756: 
        !           757:      Note:
        !           758: 
        !           759:      Why are there (invalid) CGI variables in the environment?
        !           760: 
        !           761:      Answer:  This is because you started the web server process from the
        !           762:      admin  server  which  runs the startup script of the web server, you
        !           763:      wanted  to  start, as a CGI script (a CGI script inside of the admin
        !           764:      server!).  This is why the environment of the started web server has
        !           765:      some  CGI environment variables in it. You can test this by starting
        !           766:      the  web  server not from the administration server. Use the command
        !           767:      line  as root user and start it manually - you will see there are no
        !           768:      CGI-like environment variables.
        !           769: 
        !           770:    Simply  change your scripts to get CGI variables in the correct way for
        !           771:    PHP  4.x  by  using the superglobal $_SERVER. If you have older scripts
        !           772:    which  use  $HTTP_HOST,  etc.,  you  should turn on register_globals in
        !           773:    php.ini  and  change the variable order too (important: remove "E" from
        !           774:    it, because you do not need the environment here):
        !           775: variables_order = "GPCS"
        !           776: register_globals = On
        !           777: 
        !           778: Special use for error pages or self-made directory listings (PHP >= 4.3.3)
        !           779: 
        !           780:    You  can  use  PHP  to  generate the error pages for "404 Not Found" or
        !           781:    similar.  Add  the  following  line to the object in obj.conf for every
        !           782:    error page you want to overwrite:
        !           783: Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inik
        !           784: ey=value...]
        !           785: 
        !           786:    where  XXX  is  the  HTTP  error  code.  Please  delete any other Error
        !           787:    directives  which  could  interfere  with yours. If you want to place a
        !           788:    page  for  all  errors  that could exist, leave the code parameter out.
        !           789:    Your script can get the HTTP status code with $_SERVER['ERROR_TYPE'].
        !           790: 
        !           791:    Another  possibility  is to generate self-made directory listings. Just
        !           792:    create  a PHP script which displays a directory listing and replace the
        !           793:    corresponding default Service line for type="magnus-internal/directory"
        !           794:    in obj.conf with the following:
        !           795: Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/scri
        !           796: pt.php" [inikey=value inikey=value...]
        !           797: 
        !           798:    For  both  error  and  directory  listing  pages  the  original URI and
        !           799:    translated   URI   are   in  the  variables  $_SERVER['PATH_INFO']  and
        !           800:    $_SERVER['PATH_TRANSLATED'].
        !           801: 
        !           802: Note about nsapi_virtual() and subrequests (PHP >= 4.3.3)
        !           803: 
        !           804:    The  NSAPI  module  now  supports  the nsapi_virtual() function (alias:
        !           805:    virtual())  to make subrequests on the web server and insert the result
        !           806:    in the web page. This function uses some undocumented features from the
        !           807:    NSAPI  library.  On  Unix the module automatically looks for the needed
        !           808:    functions  and  uses  them  if  available.  If  not, nsapi_virtual() is
        !           809:    disabled.
        !           810: 
        !           811:      Note:
        !           812: 
        !           813:      But be warned: Support for nsapi_virtual() is EXPERIMENTAL!!!
        !           814:      __________________________________________________________________
        !           815:      __________________________________________________________________
        !           816: 
        !           817: CGI and command line setups
        !           818: 
        !           819:    By  default,  PHP  is built as both a CLI and CGI program, which can be
        !           820:    used  for  CGI processing. If you are running a web server that PHP has
        !           821:    module  support  for,  you  should  generally  go for that solution for
        !           822:    performance  reasons.  However,  the  CGI  version enables users to run
        !           823:    different PHP-enabled pages under different user-ids.
        !           824:    Warning
        !           825: 
        !           826:    A   server   deployed   in   CGI  mode  is  open  to  several  possible
        !           827:    vulnerabilities.  Please  read our CGI security section to learn how to
        !           828:    defend yourself from such attacks.
        !           829: 
        !           830: Testing
        !           831: 
        !           832:    If  you  have  built  PHP  as a CGI program, you may test your build by
        !           833:    typing make test. It is always a good idea to test your build. This way
        !           834:    you  may  catch  a  problem  with PHP on your platform early instead of
        !           835:    having to struggle with it later.
        !           836: 
        !           837: Using Variables
        !           838: 
        !           839:    Some  server  supplied  environment  variables  are  not defined in the
        !           840:    current  »  CGI/1.1  specification.  Only  the following variables are
        !           841:    defined     there:     AUTH_TYPE,     CONTENT_LENGTH,     CONTENT_TYPE,
        !           842:    GATEWAY_INTERFACE,     PATH_INFO,     PATH_TRANSLATED,    QUERY_STRING,
        !           843:    REMOTE_ADDR,  REMOTE_HOST,  REMOTE_IDENT,  REMOTE_USER, REQUEST_METHOD,
        !           844:    SCRIPT_NAME,    SERVER_NAME,    SERVER_PORT,    SERVER_PROTOCOL,    and
        !           845:    SERVER_SOFTWARE.   Everything   else   should  be  treated  as  'vendor
        !           846:    extensions'.
        !           847:      __________________________________________________________________
        !           848:      __________________________________________________________________
        !           849: 
        !           850: HP-UX specific installation notes
        !           851: 
        !           852:    This  section  contains  notes  and hints specific to installing PHP on
        !           853:    HP-UX systems.
        !           854: 
        !           855:    There  are two main options for installing PHP on HP-UX systems. Either
        !           856:    compile it, or install a pre-compiled binary.
        !           857: 
        !           858:    Official     pre-compiled     packages    are    located    here:    »
        !           859:    http://software.hp.com/
        !           860: 
        !           861:    Until  this  manual  section  is  rewritten,  the  documentation  about
        !           862:    compiling  PHP  (and  related  extensions)  on  HP-UX  systems has been
        !           863:    removed.  For now, consider reading the following external resource: »
        !           864:    Building Apache and PHP on HP-UX 11.11
        !           865:      __________________________________________________________________
        !           866:      __________________________________________________________________
        !           867: 
        !           868: OpenBSD installation notes
        !           869: 
        !           870:    This  section contains notes and hints specific to installing PHP on »
        !           871:    OpenBSD 3.6.
        !           872: 
        !           873: Using Binary Packages
        !           874: 
        !           875:    Using  binary packages to install PHP on OpenBSD is the recommended and
        !           876:    simplest  method.  The core package has been separated from the various
        !           877:    modules,  and  each can be installed and removed independently from the
        !           878:    others.  The  files  you need can be found on your OpenBSD CD or on the
        !           879:    FTP site.
        !           880: 
        !           881:    The  main  package  you  need  to install is php4-core-4.3.8.tgz, which
        !           882:    contains  the  basic engine (plus gettext and iconv). Next, take a look
        !           883:    at    the    module   packages,   such   as   php4-mysql-4.3.8.tgz   or
        !           884:    php4-imap-4.3.8.tgz.  You need to use the phpxs command to activate and
        !           885:    deactivate these modules in your php.ini.
        !           886: 
        !           887:    Example #1 OpenBSD Package Install Example
        !           888: # pkg_add php4-core-4.3.8.tgz
        !           889: # /usr/local/sbin/phpxs -s
        !           890: # cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini
        !           891:   (add in mysql)
        !           892: # pkg_add php4-mysql-4.3.8.tgz
        !           893: # /usr/local/sbin/phpxs -a mysql
        !           894:   (add in imap)
        !           895: # pkg_add php4-imap-4.3.8.tgz
        !           896: # /usr/local/sbin/phpxs -a imap
        !           897:   (remove mysql as a test)
        !           898: # pkg_delete php4-mysql-4.3.8
        !           899: # /usr/local/sbin/phpxs -r mysql
        !           900:   (install the PEAR libraries)
        !           901: # pkg_add php4-pear-4.3.8.tgz
        !           902: 
        !           903:    Read  the  » packages(7) manual page for more information about binary
        !           904:    packages on OpenBSD.
        !           905: 
        !           906: Using Ports
        !           907: 
        !           908:    You  can  also  compile  up  PHP  from  source using the » ports tree.
        !           909:    However,  this is only recommended for users familiar with OpenBSD. The
        !           910:    PHP  4 port is split into two sub-directories: core and extensions. The
        !           911:    extensions  directory  generates  sub-packages for all of the supported
        !           912:    PHP  modules.  If  you  find  you  do  not want to create some of these
        !           913:    modules,  use  the  no_* FLAVOR. For example, to skip building the imap
        !           914:    module, set the FLAVOR to no_imap.
        !           915: 
        !           916: Common Problems
        !           917: 
        !           918:      * The default install of Apache runs inside a » chroot(2) jail, which
        !           919:        will  restrict  PHP  scripts to accessing files under /var/www. You
        !           920:        will  therefore  need  to  create  a /var/www/tmp directory for PHP
        !           921:        session  files to be stored, or use an alternative session backend.
        !           922:        In  addition, database sockets need to be placed inside the jail or
        !           923:        listen  on  the  localhost interface. If you use network functions,
        !           924:        some  files  from  /etc  such as /etc/resolv.conf and /etc/services
        !           925:        will  need  to be moved into /var/www/etc. The OpenBSD PEAR package
        !           926:        automatically  installs  into the correct chroot directories, so no
        !           927:        special  modification  is  needed  there.  More  information on the
        !           928:        OpenBSD Apache is available in the » OpenBSD FAQ.
        !           929:      * The OpenBSD 3.6 package for the » gd extension requires XFree86 to
        !           930:        be  installed.  If you do not wish to use some of the font features
        !           931:        that  require  X11,  install  the  php4-gd-4.3.8-no_x11.tgz package
        !           932:        instead.
        !           933: 
        !           934: Older Releases
        !           935: 
        !           936:    Older  releases  of  OpenBSD  used  the  FLAVORS system to compile up a
        !           937:    statically  linked  PHP.  Since  it is hard to generate binary packages
        !           938:    using  this  method,  it  is  now deprecated. You can still use the old
        !           939:    stable ports trees if you wish, but they are unsupported by the OpenBSD
        !           940:    team.  If  you have any comments about this, the current maintainer for
        !           941:    the port is Anil Madhavapeddy (avsm at openbsd dot org).
        !           942:      __________________________________________________________________
        !           943:      __________________________________________________________________
        !           944: 
        !           945: Solaris specific installation tips
        !           946: 
        !           947:    This  section  contains  notes  and hints specific to installing PHP on
        !           948:    Solaris systems.
        !           949: 
        !           950: Required software
        !           951: 
        !           952:    Solaris  installs  often lack C compilers and their related tools. Read
        !           953:    this  FAQ  for  information on why using GNU versions for some of these
        !           954:    tools is necessary. The required software is as follows:
        !           955:      * gcc (recommended, other C compilers may work)
        !           956:      * make
        !           957:      * flex
        !           958:      * bison
        !           959:      * m4
        !           960:      * autoconf
        !           961:      * automake
        !           962:      * perl
        !           963:      * gzip
        !           964:      * tar
        !           965:      * GNU sed
        !           966: 
        !           967:    In  addition,  you  will  need  to  install  (and possibly compile) any
        !           968:    additional  software  specific to your configuration, such as Oracle or
        !           969:    MySQL.
        !           970: 
        !           971: Using Packages
        !           972: 
        !           973:    You can simplify the Solaris install process by using pkgadd to install
        !           974:    most of your needed components.
        !           975:      __________________________________________________________________
        !           976:      __________________________________________________________________
        !           977: 
        !           978: Debian GNU/Linux installation notes
        !           979: 
        !           980:    This  section contains notes and hints specific to installing PHP on »
        !           981:    Debian GNU/Linux.
        !           982:    Warning
        !           983: 
        !           984:    Unofficial  builds  from third-parties are not supported here. Any bugs
        !           985:    should  be  reported  to  the Debian team unless they can be reproduced
        !           986:    using the latest builds from our » download area.
        !           987: 
        !           988:    While  the  instructions  for  building  PHP on Unix apply to Debian as
        !           989:    well, this manual page contains specific information for other options,
        !           990:    such as using either the apt-get or aptitude commands. This manual page
        !           991:    uses these two commands interchangeably.
        !           992: 
        !           993: Using APT
        !           994: 
        !           995:    First,   note   that   other  related  packages  may  be  desired  like
        !           996:    libapache2-mod-php5 to integrate with Apache 2, and php-pear for PEAR.
        !           997: 
        !           998:    Second,  before  installing  a package, it's wise to ensure the package
        !           999:    list  is  up  to  date.  Typically, this is done by running the command
        !          1000:    apt-get update.
        !          1001: 
        !          1002:    Example #1 Debian Install Example with Apache 2
        !          1003: # apt-get install php5-common libapache2-mod-php5 php5-cli
        !          1004: 
        !          1005:    APT will automatically install the PHP 5 module for Apache 2 and all of
        !          1006:    its  dependencies,  and then activate it. Apache should be restarted in
        !          1007:    order for the changes take place. For example:
        !          1008: 
        !          1009:    Example #2 Stopping and starting Apache once PHP is installed
        !          1010: # /etc/init.d/apache2 stop
        !          1011: # /etc/init.d/apache2 start
        !          1012: 
        !          1013: Better control of configuration
        !          1014: 
        !          1015:    In  the  last  section,  PHP was installed with only core modules. It's
        !          1016:    very  likely  that  additional  modules will be desired, such as MySQL,
        !          1017:    cURL, GD, etc. These may also be installed via the apt-get command.
        !          1018: 
        !          1019:    Example #3 Methods for listing additional PHP 5 packages
        !          1020: # apt-cache search php5
        !          1021: # aptitude search php5
        !          1022: # aptitude search php5 |grep -i mysql
        !          1023: 
        !          1024:    The examples will show a lot of packages including several PHP specific
        !          1025:    ones  like  php5-cgi, php5-cli and php5-dev. Determine which are needed
        !          1026:    and  install  them  like any other with either apt-get or aptitude. And
        !          1027:    because  Debian  performs  dependency checks, it'll prompt for those so
        !          1028:    for example to install MySQL and cURL:
        !          1029: 
        !          1030:    Example #4 Install PHP with MySQL, cURL
        !          1031: # apt-get install php5-mysql php5-curl
        !          1032: 
        !          1033:    APT  will  automatically  add  the  appropriate  lines to the different
        !          1034:    php.ini      related      files     like     /etc/php5/apache2/php.ini,
        !          1035:    /etc/php5/conf.d/pdo.ini,  etc. and depending on the extension will add
        !          1036:    entries similar to extension=foo.so. However, restarting the web server
        !          1037:    (like Apache) is required before these changes take affect.
        !          1038: 
        !          1039: Common Problems
        !          1040: 
        !          1041:      * If  the  PHP  scripts are not parsing via the web server, then it's
        !          1042:        likely  that  PHP  was  not added to the web server's configuration
        !          1043:        file,  which on Debian may be /etc/apache2/apache2.conf or similar.
        !          1044:        See the Debian manual for further details.
        !          1045:      * If  an  extension  was  seemingly  installed  yet the functions are
        !          1046:        undefined,  be  sure  that the appropriate ini file is being loaded
        !          1047:        and/or the web server was restarted after installation.
        !          1048:      * There are two basic commands for installing packages on Debian (and
        !          1049:        other  linux  variants):  apt-get and aptitude. However, explaining
        !          1050:        the subtle differences between these commands goes beyond the scope
        !          1051:        of this manual.
        !          1052:      __________________________________________________________________
        !          1053:      __________________________________________________________________
        !          1054:      __________________________________________________________________
        !          1055: 
        !          1056: Installation on Mac OS X
        !          1057: 
        !          1058: Table of Contents
        !          1059: 
        !          1060:      * Using Packages
        !          1061:      * Using the bundled PHP
        !          1062:      * Compiling PHP on Mac OS X
        !          1063: 
        !          1064:    This section contains notes and hints specific to installing PHP on Mac
        !          1065:    OS  X.  PHP  is bundled with Macs, and compiling is similar to the Unix
        !          1066:    installation guide.
        !          1067:      __________________________________________________________________
        !          1068: 
        !          1069: Using Packages
        !          1070: 
        !          1071:    There  are  a few pre-packaged and pre-compiled versions of PHP for Mac
        !          1072:    OS  X. This can help in setting up a standard configuration, but if you
        !          1073:    need to have a different set of features (such as a secure server, or a
        !          1074:    different  database  driver), you may need to build PHP and/or your web
        !          1075:    server yourself. If you are unfamiliar with building and compiling your
        !          1076:    own  software, it's worth checking whether somebody has already built a
        !          1077:    packaged version of PHP with the features you need.
        !          1078: 
        !          1079:    The  following resources offer easy to install packages and precompiled
        !          1080:    binaries for PHP on Mac OS:
        !          1081: 
        !          1082:      * MacPorts: » http://www.macports.org/
        !          1083:      * Entropy: » http://www.entropy.ch/software/macosx/php/
        !          1084:      * Fink: » http://www.finkproject.org/
        !          1085:      * Homebrew: » http://github.com/mxcl/homebrew
        !          1086:      __________________________________________________________________
        !          1087:      __________________________________________________________________
        !          1088: 
        !          1089: Using the bundled PHP
        !          1090: 
        !          1091:    PHP has come standard with Macs since OS X version 10.0.0. Enabling PHP
        !          1092:    with  the  default  web server requires uncommenting a few lines in the
        !          1093:    Apache  configuration  file  httpd.conf  whereas the CGI and/or CLI are
        !          1094:    enabled by default (easily accessible via the Terminal program).
        !          1095: 
        !          1096:    Enabling  PHP using the instructions below is meant for quickly setting
        !          1097:    up  a  local development environment. It's highly recommended to always
        !          1098:    upgrade  PHP  to  the  newest  version.  Like most live software, newer
        !          1099:    versions  are  created to fix bugs and add features and PHP being is no
        !          1100:    different.  See the appropriate MAC OS X installation documentation for
        !          1101:    further  details.  The  following  instructions  are  geared  towards a
        !          1102:    beginner with details provided for getting a default setup to work. All
        !          1103:    users are encouraged to compile, or install a new packaged version.
        !          1104: 
        !          1105:    The  standard  installation  type  is  using  mod_php, and enabling the
        !          1106:    bundled  mod_php on Mac OS X for the Apache web server (the default web
        !          1107:    server,  that  is  accessible  via  System  Preferences)  involves  the
        !          1108:    following steps:
        !          1109: 
        !          1110:     1. Locate  and  open  the  Apache  configuration file. By default, the
        !          1111:        location   is  as  follows:  /private/etc/apache2/httpd.conf  Using
        !          1112:        Finder  or  Spotlight  to  find this file may prove difficult as by
        !          1113:        default it's private and owned by the root user.
        !          1114: 
        !          1115:      Note:  One  way to open this is by using a Unix based text editor in
        !          1116:      the  Terminal,  for  example  nano, and because the file is owned by
        !          1117:      root  we'll use the sudo command to open it (as root) so for example
        !          1118:      type  the  following  into  the Terminal Application (after, it will
        !          1119:      prompt  for  a  password): sudo nano /private/etc/apache2/httpd.conf
        !          1120:      Noteworthy  nano  commands:  ^w  (search),  ^o (save), and ^x (exit)
        !          1121:      where ^ represents the Ctrl key.
        !          1122: 
        !          1123:      Note:  Versions  of  Mac  OS X prior to 10.5 were bundled with older
        !          1124:      versions  of  PHP and Apache. As such, the Apache configuration file
        !          1125:      on legacy machines may be /etc/httpd/httpd.conf.
        !          1126:     2. With  a  text  editor, uncomment the lines (by removing the #) that
        !          1127:        look  similar  to  the  following  (these  two  lines are often not
        !          1128:        together, locate them both in the file):
        !          1129: # LoadModule php5_module libexec/httpd/libphp5.so
        !          1130: 
        !          1131: # AddModule mod_php5.c
        !          1132: 
        !          1133:        Notice  the  location/path.  When  building  PHP in the future, the
        !          1134:        above files should be replaced or commented out.
        !          1135:     3. Be  sure  the  desired extensions will parse as PHP (examples: .php
        !          1136:        .html and .inc)
        !          1137:        Due  to  the following statement already existing in httpd.conf (as
        !          1138:        of   Mac  Panther),  once  PHP  is  enabled  the  .php  files  will
        !          1139:        automatically parse as PHP.
        !          1140: <IfModule mod_php5.c>
        !          1141:     # If php is turned on, we respect .php and .phps files.
        !          1142:     AddType application/x-httpd-php .php
        !          1143:     AddType application/x-httpd-php-source .phps
        !          1144: 
        !          1145:     # Since most users will want index.php to work we
        !          1146:     # also automatically enable index.php
        !          1147:     <IfModule mod_dir.c>
        !          1148:         DirectoryIndex index.html index.php
        !          1149:     </IfModule>
        !          1150: </IfModule>
        !          1151: 
        !          1152:      Note:
        !          1153:      Before  OS  X  10.5 (Leopard), PHP 4 was bundled instead of PHP 5 in
        !          1154:      which  case  the above instructions will differ slightly by changing
        !          1155:      5's to 4's.
        !          1156:     4. Be  sure  the  DirectoryIndex  loads the desired default index file
        !          1157:        This  is also set in httpd.conf. Typically index.php and index.html
        !          1158:        are  used. By default index.php is enabled because it's also in the
        !          1159:        PHP check shown above. Adjust accordingly.
        !          1160:     5. Set  the  php.ini  location  or  use  the default A typical default
        !          1161:        location  on  Mac  OS  X  is  /usr/local/php/php.ini  and a call to
        !          1162:        phpinfo()  will  reveal this information. If a php.ini is not used,
        !          1163:        PHP  will  use  all  default  values.  See  also the related FAQ on
        !          1164:        finding php.ini.
        !          1165:     6. Locate  or  set the DocumentRoot This is the root directory for all
        !          1166:        the  web  files.  Files  in  this directory are served from the web
        !          1167:        server so the PHP files will parse as PHP before outputting them to
        !          1168:        the browser. A typical default path is /Library/WebServer/Documents
        !          1169:        but  this  can be set to anything in httpd.conf. Alternatively, the
        !          1170:        default      DocumentRoot      for      individual     users     is
        !          1171:        /Users/yourusername/Sites
        !          1172:     7. Create a phpinfo() file
        !          1173:        The phpinfo() function will display information about PHP. Consider
        !          1174:        creating a file in the DocumentRoot with the following PHP code:
        !          1175:        <?php phpinfo(); ?>
        !          1176:     8. Restart  Apache,  and  load  the PHP file created above To restart,
        !          1177:        either  execute  sudo apachectl graceful in the shell or stop/start
        !          1178:        the "Personal Web Server" option in the OS X System Preferences. By
        !          1179:        default,  loading  local files in the browser will have an URL like
        !          1180:        so: http://localhost/info.php Or using the DocumentRoot in the user
        !          1181:        directory  is  another  option  and  would  end  up  looking  like:
        !          1182:        http://localhost/~yourusername/info.php
        !          1183: 
        !          1184:    The  CLI  (or  CGI  in  older  versions) is appropriately named php and
        !          1185:    likely  exists  as /usr/bin/php. Open up the terminal, read the command
        !          1186:    line  section  of  the  PHP manual, and execute php -v to check the PHP
        !          1187:    version  of  this PHP binary. A call to phpinfo() will also reveal this
        !          1188:    information.
        !          1189:      __________________________________________________________________
        !          1190:      __________________________________________________________________
        !          1191: 
        !          1192: Compiling PHP on Mac OS X
        !          1193: 
        !          1194:    Use the Unix installation guide to compile PHP on Mac OS X.
        !          1195:      __________________________________________________________________
        !          1196:      __________________________________________________________________
        !          1197:      __________________________________________________________________
        !          1198: 
        !          1199: Installation of PECL extensions
        !          1200: 
        !          1201: Table of Contents
        !          1202: 
        !          1203:      * Introduction to PECL Installations
        !          1204:      * Downloading PECL extensions
        !          1205:      * Installing a PHP extension on Windows
        !          1206:      * Compiling shared PECL extensions with the pecl command
        !          1207:      * Compiling shared PECL extensions with phpize
        !          1208:      * Compiling PECL extensions statically into PHP
        !          1209:      __________________________________________________________________
        !          1210: 
        !          1211: Introduction to PECL Installations
        !          1212: 
        !          1213:    » PECL is a repository of PHP extensions that are made available to you
        !          1214:    via the » PEAR packaging system. This section of the manual is intended
        !          1215:    to demonstrate how to obtain and install PECL extensions.
        !          1216: 
        !          1217:    These  instructions  assume  /your/phpsrcdir/  is  the  path to the PHP
        !          1218:    source  distribution,  and  that  extname  is  the  name  of  the  PECL
        !          1219:    extension.   Adjust  accordingly.  These  instructions  also  assume  a
        !          1220:    familiarity with the » pear command. The information in the PEAR manual
        !          1221:    for the pear command also applies to the pecl command.
        !          1222: 
        !          1223:    To  be useful, a shared extension must be built, installed, and loaded.
        !          1224:    The  methods  described  below provide you with various instructions on
        !          1225:    how  to build and install the extensions, but they do not automatically
        !          1226:    load  them.  Extensions can be loaded by adding an extension directive.
        !          1227:    To this php.ini file, or through the use of the dl() function.
        !          1228: 
        !          1229:    When  building  PHP modules, it's important to have known-good versions
        !          1230:    of  the  required  tools (autoconf, automake, libtool, etc.) See the »
        !          1231:    Anonymous  SVN  Instructions  for  details  on  the required tools, and
        !          1232:    required versions.
        !          1233:      __________________________________________________________________
        !          1234:      __________________________________________________________________
        !          1235: 
        !          1236: Downloading PECL extensions
        !          1237: 
        !          1238:    There are several options for downloading PECL extensions, such as:
        !          1239:      * The  pecl  install  extname  command  downloads the extensions code
        !          1240:        automatically,  so  in  this  case  there is no need for a separate
        !          1241:        download.
        !          1242:      * » http://pecl.php.net/ The PECL web site contains information about
        !          1243:        the  different  extensions  that are offered by the PHP Development
        !          1244:        Team.  The  information available here includes: ChangeLog, release
        !          1245:        notes, requirements and other similar details.
        !          1246:      * pecl  download extname PECL extensions that have releases listed on
        !          1247:        the PECL web site are available for download and installation using
        !          1248:        the » pecl command. Specific revisions may also be specified.
        !          1249:      * SVN  Most  PECL extensions also reside in SVN. A web-based view may
        !          1250:        be seen at » http://svn.php.net/viewvc/pecl/. To download straight
        !          1251:        from SVN, the following sequence of commands may be used:
        !          1252:        $   svn  checkout  http://svn.php.net/repository/pecl/extname/trunk
        !          1253:        extname
        !          1254:      * Windows  downloads  At  this  time the PHP project does not compile
        !          1255:        Windows binaries for PECL extensions. However, to compile PHP under
        !          1256:        Windows see the chapter titled building PHP for Windows.
        !          1257:      __________________________________________________________________
        !          1258:      __________________________________________________________________
        !          1259: 
        !          1260: Installing a PHP extension on Windows
        !          1261: 
        !          1262:    On  Windows,  you have two ways to load a PHP extension: either compile
        !          1263:    it  into  PHP, or load the DLL. Loading a pre-compiled extension is the
        !          1264:    easiest and preferred way.
        !          1265: 
        !          1266:    To load an extension, you need to have it available as a ".dll" file on
        !          1267:    your  system.  All  the  extensions  are automatically and periodically
        !          1268:    compiled by the PHP Group (see next section for the download).
        !          1269: 
        !          1270:    To  compile an extension into PHP, please refer to building from source
        !          1271:    documentation.
        !          1272: 
        !          1273:    To  compile  a  standalone  extension (aka a DLL file), please refer to
        !          1274:    building  from  source  documentation.  If  the  DLL  file is available
        !          1275:    neither with your PHP distribution nor in PECL, you may have to compile
        !          1276:    it before you can start using the extension.
        !          1277: 
        !          1278: Where to find an extension?
        !          1279: 
        !          1280:    PHP   extensions   are  usually  called  "php_*.dll"  (where  the  star
        !          1281:    represents  the  name  of the extension) and they are located under the
        !          1282:    "PHP\ext" ("PHP\extensions" in PHP4) folder.
        !          1283: 
        !          1284:    PHP   ships  with  the  extensions  most  useful  to  the  majority  of
        !          1285:    developers. They are called "core" extensions.
        !          1286: 
        !          1287:    However,  if you need functionality not provided by any core extension,
        !          1288:    you  may still be able to find one in PECL. The PHP Extension Community
        !          1289:    Library  (PECL)  is  a  repository  for  PHP  Extensions,  providing  a
        !          1290:    directory   of   all   known  extensions  and  hosting  facilities  for
        !          1291:    downloading and development of PHP extensions.
        !          1292: 
        !          1293:    If you have developed an extension for your own uses, you might want to
        !          1294:    think  about  hosting it on PECL so that others with the same needs can
        !          1295:    benefit from your time. A nice side effect is that you give them a good
        !          1296:    chance  to  give you feedback, (hopefully) thanks, bug reports and even
        !          1297:    fixes/patches.  Before  you  submit your extension for hosting on PECL,
        !          1298:    please read http://pecl.php.net/package-new.php.
        !          1299: 
        !          1300: Which extension to download?
        !          1301: 
        !          1302:    Many times, you will find several versions of each DLL:
        !          1303:      * Different  version  numbers  (at least the first two numbers should
        !          1304:        match)
        !          1305:      * Different thread safety settings
        !          1306:      * Different processor architecture (x86, x64, ...)
        !          1307:      * Different debugging settings
        !          1308:      * etc.
        !          1309: 
        !          1310:    You  should  keep in mind that your extension settings should match all
        !          1311:    the  settings  of  the  PHP executable you are using. The following PHP
        !          1312:    script will tell you all about your PHP settings:
        !          1313: 
        !          1314:    Example #1 phpinfo() call
        !          1315:    <?php
        !          1316:    phpinfo();
        !          1317:    ?>
        !          1318: 
        !          1319:    Or from the command line, run:
        !          1320: drive:\\path\to\php\executable\php.exe -i
        !          1321: 
        !          1322: Loading an extension
        !          1323: 
        !          1324:    The  most  common  way to load a PHP extension is to include it in your
        !          1325:    php.ini  configuration  file.  Please  note  that  many  extensions are
        !          1326:    already  present  in  your php.ini and that you only need to remove the
        !          1327:    semicolon to activate them.
        !          1328: ;extension=php_extname.dll
        !          1329: 
        !          1330: extension=php_extname.dll
        !          1331: 
        !          1332:    However,  some  web  servers  are confusing because they do not use the
        !          1333:    php.ini  located  alongside your PHP executable. To find out where your
        !          1334:    actual php.ini resides, look for its path in phpinfo():
        !          1335: Configuration File (php.ini) Path  C:\WINDOWS
        !          1336: 
        !          1337: Loaded Configuration File   C:\Program Files\PHP\5.2\php.ini
        !          1338: 
        !          1339:    After activating an extension, save php.ini, restart the web server and
        !          1340:    check  phpinfo()  again.  The  new  extension  should  now have its own
        !          1341:    section.
        !          1342: 
        !          1343: Resolving problems
        !          1344: 
        !          1345:    If  the  extension  does not appear in phpinfo(), you should check your
        !          1346:    logs to learn where the problem comes from.
        !          1347: 
        !          1348:    If you are using PHP from the command line (CLI), the extension loading
        !          1349:    error can be read directly on screen.
        !          1350: 
        !          1351:    If  you are using PHP with a web server, the location and format of the
        !          1352:    logs  vary  depending  on  your  software.  Please read your web server
        !          1353:    documentation  to  locate  the logs, as it does not have anything to do
        !          1354:    with PHP itself.
        !          1355: 
        !          1356:    Common  problems  are  the  location  of  the  DLL,  the value of the "
        !          1357:    extension_dir"   setting   inside   php.ini  and  compile-time  setting
        !          1358:    mismatches.
        !          1359: 
        !          1360:    If  the  problem  lies in a compile-time setting mismatch, you probably
        !          1361:    didn't download the right DLL. Try downloading again the extension with
        !          1362:    the right settings. Again, phpinfo() can be of great help.
        !          1363:      __________________________________________________________________
        !          1364:      __________________________________________________________________
        !          1365: 
        !          1366: Compiling shared PECL extensions with the pecl command
        !          1367: 
        !          1368:    PECL  makes  it easy to create shared PHP extensions. Using the » pecl
        !          1369:    command, do the following:
        !          1370: 
        !          1371:    $ pecl install extname
        !          1372: 
        !          1373:    This  will  download  the  source  for  extname,  compile,  and install
        !          1374:    extname.so  into  your extension_dir. extname.so may then be loaded via
        !          1375:    php.ini
        !          1376: 
        !          1377:    By  default, the pecl command will not install packages that are marked
        !          1378:    with  the alpha or beta state. If no stable packages are available, you
        !          1379:    may install a beta package using the following command:
        !          1380: 
        !          1381:    $ pecl install extname-beta
        !          1382: 
        !          1383:    You may also install a specific version using this variant:
        !          1384: 
        !          1385:    $ pecl install extname-0.1
        !          1386: 
        !          1387:      Note:
        !          1388: 
        !          1389:      After  enabling the extension in php.ini, restarting the web service
        !          1390:      is required for the changes to be picked up.
        !          1391:      __________________________________________________________________
        !          1392:      __________________________________________________________________
        !          1393: 
        !          1394: Compiling shared PECL extensions with phpize
        !          1395: 
        !          1396:    Sometimes,  using  the  pecl  installer is not an option. This could be
        !          1397:    because  you're behind a firewall, or it could be because the extension
        !          1398:    you want to install is not available as a PECL compatible package, such
        !          1399:    as  unreleased  extensions  from  SVN.  If  you  need  to build such an
        !          1400:    extension, you can use the lower-level build tools to perform the build
        !          1401:    manually.
        !          1402: 
        !          1403:    The  phpize  command is used to prepare the build environment for a PHP
        !          1404:    extension. In the following sample, the sources for an extension are in
        !          1405:    a directory named extname:
        !          1406: 
        !          1407: $ cd extname
        !          1408: $ phpize
        !          1409: $ ./configure
        !          1410: $ make
        !          1411: # make install
        !          1412: 
        !          1413:    A  successful  install will have created extname.so and put it into the
        !          1414:    PHP  extensions directory. You'll need to and adjust php.ini and add an
        !          1415:    extension=extname.so line before you can use the extension.
        !          1416: 
        !          1417:    If  the  system is missing the phpize command, and precompiled packages
        !          1418:    (like  RPM's)  are  used, be sure to also install the appropriate devel
        !          1419:    version  of  the  PHP  package as they often include the phpize command
        !          1420:    along   with  the  appropriate  header  files  to  build  PHP  and  its
        !          1421:    extensions.
        !          1422: 
        !          1423:    Execute phpize --help to display additional usage information.
        !          1424:      __________________________________________________________________
        !          1425:      __________________________________________________________________
        !          1426: 
        !          1427: Compiling PECL extensions statically into PHP
        !          1428: 
        !          1429:    You  might find that you need to build a PECL extension statically into
        !          1430:    your  PHP binary. To do this, you'll need to place the extension source
        !          1431:    under  the  php-src/ext/  directory  and  tell  the PHP build system to
        !          1432:    regenerate its configure script.
        !          1433: 
        !          1434: $ cd /your/phpsrcdir/ext
        !          1435: $ pecl download extname
        !          1436: $ gzip -d < extname.tgz | tar -xvf -
        !          1437: $ mv extname-x.x.x extname
        !          1438: 
        !          1439:    This will result in the following directory:
        !          1440: 
        !          1441:    /your/phpsrcdir/ext/extname
        !          1442: 
        !          1443:    From  here,  force  PHP to rebuild the configure script, and then build
        !          1444:    PHP as normal:
        !          1445: 
        !          1446:    $ cd /your/phpsrcdir
        !          1447:    $ rm configure
        !          1448:    $ ./buildconf --force
        !          1449:    $ ./configure --help
        !          1450:    $ ./configure --with-extname --enable-someotherext --with-foobar
        !          1451:    $ make
        !          1452:    $ make install
        !          1453: 
        !          1454:      Note:  To  run  the  'buildconf'  script  you need autoconf 2.13 and
        !          1455:      automake  1.4+  (newer  versions  of  autoconf may work, but are not
        !          1456:      supported).
        !          1457: 
        !          1458:    Whether  --enable-extname  or  --with-extname  is  used  depends on the
        !          1459:    extension.  Typically  an  extension  that  does  not  require external
        !          1460:    libraries uses --enable. To be sure, run the following after buildconf:
        !          1461: 
        !          1462:    $ ./configure --help | grep extname
        !          1463:      __________________________________________________________________
        !          1464:      __________________________________________________________________
        !          1465:      __________________________________________________________________
        !          1466: 
        !          1467: Problems?
        !          1468: 
        !          1469: Table of Contents
        !          1470: 
        !          1471:      * Read the FAQ
        !          1472:      * Other problems
        !          1473:      * Bug reports
        !          1474:      __________________________________________________________________
        !          1475: 
        !          1476: Read the FAQ
        !          1477: 
        !          1478:    Some  problems  are  more  common than others. The most common ones are
        !          1479:    listed in the PHP FAQ, part of this manual.
        !          1480:      __________________________________________________________________
        !          1481:      __________________________________________________________________
        !          1482: 
        !          1483: Other problems
        !          1484: 
        !          1485:    If  you  are  still stuck, someone on the PHP installation mailing list
        !          1486:    may  be  able  to  help you. You should check out the archive first, in
        !          1487:    case  someone already answered someone else who had the same problem as
        !          1488:    you.   The   archives  are  available  from  the  support  page  on  »
        !          1489:    http://www.php.net/support.php.  To  subscribe  to the PHP installation
        !          1490:    mailing list, send an empty mail to »
        !          1491:    php-install-subscribe@lists.php.net.  The  mailing  list  address is »
        !          1492:    php-install@lists.php.net.
        !          1493: 
        !          1494:    If  you  want to get help on the mailing list, please try to be precise
        !          1495:    and  give the necessary details about your environment (which operating
        !          1496:    system,  what  PHP  version, what web server, if you are running PHP as
        !          1497:    CGI or a server module, safe mode, etc.), and preferably enough code to
        !          1498:    make others able to reproduce and test your problem.
        !          1499:      __________________________________________________________________
        !          1500:      __________________________________________________________________
        !          1501: 
        !          1502: Bug reports
        !          1503: 
        !          1504:    If  you  think  you  have found a bug in PHP, please report it. The PHP
        !          1505:    developers  probably  don't  know  about  it, and unless you report it,
        !          1506:    chances  are  it  won't  be  fixed.  You  can  report  bugs  using  the
        !          1507:    bug-tracking  system at » http://bugs.php.net/. Please do not send bug
        !          1508:    reports  in  mailing  list  or personal letters. The bug system is also
        !          1509:    suitable to submit feature requests.
        !          1510: 
        !          1511:    Read  the  »  How  to  report a bug document before submitting any bug
        !          1512:    reports!
        !          1513:      __________________________________________________________________
        !          1514:      __________________________________________________________________
        !          1515:      __________________________________________________________________
        !          1516: 
        !          1517: Runtime Configuration
        !          1518: 
        !          1519: Table of Contents
        !          1520: 
        !          1521:      * The configuration file
        !          1522:      * .user.ini files
        !          1523:      * Where a configuration setting may be set
        !          1524:      * How to change configuration settings
        !          1525:      __________________________________________________________________
        !          1526: 
        !          1527: The configuration file
        !          1528: 
        !          1529:    The  configuration  file  (php.ini) is read when PHP starts up. For the
        !          1530:    server  module  versions  of  PHP,  this happens only once when the web
        !          1531:    server  is  started.  For  the CGI and CLI version, it happens on every
        !          1532:    invocation.
        !          1533: 
        !          1534:    php.ini is searched in these locations (in order):
        !          1535:      * SAPI  module specific location (PHPIniDir directive in Apache 2, -c
        !          1536:        command  line  option  in  CGI and CLI, php_ini parameter in NSAPI,
        !          1537:        PHP_INI_PATH environment variable in THTTPD)
        !          1538:      * The  PHPRC  environment variable. Before PHP 5.2.0 this was checked
        !          1539:        after the registry key mentioned below.
        !          1540:      * As  of  PHP  5.2.0, the location of the php.ini file can be set for
        !          1541:        different versions of PHP. The following registry keys are examined
        !          1542:        in          order:         [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z],
        !          1543:        [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] and
        !          1544:        [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x],  where x, y and z mean the PHP
        !          1545:        major,  minor  and  release  versions.  If  there  is  a  value for
        !          1546:        IniFilePath in these keys, then the first one found will be used as
        !          1547:        the location of the php.ini (Windows only).
        !          1548:      * [HKEY_LOCAL_MACHINE\SOFTWARE\PHP],  value  of  IniFilePath (Windows
        !          1549:        only).
        !          1550:      * Current working directory (except CLI)
        !          1551:      * The  web server's directory (for SAPI modules), or directory of PHP
        !          1552:        (otherwise in Windows)
        !          1553:      * Windows  directory  (C:\windows  or  C:\winnt)  (for  Windows),  or
        !          1554:        --with-config-file-path compile time option
        !          1555: 
        !          1556:    If  php-SAPI.ini  exists  (where  SAPI is used SAPI, so the filename is
        !          1557:    e.g. php-cli.ini or php-apache.ini), it's used instead of php.ini. SAPI
        !          1558:    name can be determined by php_sapi_name().
        !          1559: 
        !          1560:      Note:
        !          1561: 
        !          1562:      The  Apache  web  server  changes  the  directory to root at startup
        !          1563:      causing  PHP  to attempt to read php.ini from the root filesystem if
        !          1564:      it exists.
        !          1565: 
        !          1566:    The   php.ini   directives   handled   by   extensions  are  documented
        !          1567:    respectively on the pages of the extensions themselves. The list of the
        !          1568:    core  directives  is  available  in  the appendix. Probably not all PHP
        !          1569:    directives  are documented in the manual though. For a complete list of
        !          1570:    directives  available  in  your  PHP  version,  please  read  your well
        !          1571:    commented  php.ini  file. Alternatively, you may find the » the latest
        !          1572:    php.ini from SVN helpful too.
        !          1573: 
        !          1574:    Example #1 php.ini example
        !          1575: ; any text on a line after an unquoted semicolon (;) is ignored
        !          1576: [php] ; section markers (text within square brackets) are also ignored
        !          1577: ; Boolean values can be set to either:
        !          1578: ;    true, on, yes
        !          1579: ; or false, off, no, none
        !          1580: register_globals = off
        !          1581: track_errors = yes
        !          1582: 
        !          1583: ; you can enclose strings in double-quotes
        !          1584: include_path = ".:/usr/local/lib/php"
        !          1585: 
        !          1586: ; backslashes are treated the same as any other character
        !          1587: include_path = ".;c:\php\lib"
        !          1588: 
        !          1589:    Since  PHP  5.1.0,  it  is possible to refer to existing .ini variables
        !          1590:    from   within  .ini  files.  Example:  open_basedir  =  ${open_basedir}
        !          1591:    ":/new/dir".
        !          1592:      __________________________________________________________________
        !          1593:      __________________________________________________________________
        !          1594: 
        !          1595: .user.ini files
        !          1596: 
        !          1597:    Since  PHP 5.3.0, PHP includes support for .htaccess-style INI files on
        !          1598:    a   per-directory   basis.  These  files  are  processed  only  by  the
        !          1599:    CGI/FastCGI  SAPI.  This  functionality  obsoletes  the  PECL htscanner
        !          1600:    extension.  If  you  are using Apache, use .htaccess files for the same
        !          1601:    effect.
        !          1602: 
        !          1603:    In  addition  to the main php.ini file, PHP scans for INI files in each
        !          1604:    directory,  starting  with the directory of the requested PHP file, and
        !          1605:    working   its   way  up  to  the  current  document  root  (as  set  in
        !          1606:    $_SERVER['DOCUMENT_ROOT']).  In  case  the  PHP  file  is  outside  the
        !          1607:    document root, only its directory is scanned.
        !          1608: 
        !          1609:    Only  INI  settings with the modes PHP_INI_PERDIR and PHP_INI_USER will
        !          1610:    be recognized in .user.ini-style INI files.
        !          1611: 
        !          1612:    Two   new  INI  directives,  user_ini.filename  and  user_ini.cache_ttl
        !          1613:    control the use of user INI files.
        !          1614: 
        !          1615:    user_ini.filename  sets  the  name  of  the  file PHP looks for in each
        !          1616:    directory;  if  set  to  an  empty string, PHP doesn't scan at all. The
        !          1617:    default is .user.ini.
        !          1618: 
        !          1619:    user_ini.cache_ttl  controls  how often user INI files are re-read. The
        !          1620:    default is 300 seconds (5 minutes).
        !          1621:      __________________________________________________________________
        !          1622:      __________________________________________________________________
        !          1623: 
        !          1624: Where a configuration setting may be set
        !          1625: 
        !          1626:    These  modes determine when and where a PHP directive may or may not be
        !          1627:    set, and each directive within the manual refers to one of these modes.
        !          1628:    For  example,  some  settings  may  be  set  within  a PHP script using
        !          1629:    ini_set(), whereas others may require php.ini or httpd.conf.
        !          1630: 
        !          1631:    For  example,  the output_buffering setting is PHP_INI_PERDIR therefore
        !          1632:    it  may  not  be  set  using  ini_set().  However,  the  display_errors
        !          1633:    directive  is  PHP_INI_ALL  therefore it may be set anywhere, including
        !          1634:    with ini_set().
        !          1635: 
        !          1636:    CAPTION: Definition of PHP_INI_* modes
        !          1637: 
        !          1638:         Mode      Value                        Meaning
        !          1639:    PHP_INI_USER   1     Entry can be set in user scripts (like with ini_set())
        !          1640:                         or in the Windows registry
        !          1641:    PHP_INI_PERDIR 6     Entry can be set in php.ini, .htaccess or httpd.conf
        !          1642:    PHP_INI_SYSTEM 4     Entry can be set in php.ini or httpd.conf
        !          1643:    PHP_INI_ALL    7     Entry can be set anywhere
        !          1644:      __________________________________________________________________
        !          1645:      __________________________________________________________________
        !          1646: 
        !          1647: How to change configuration settings
        !          1648: 
        !          1649: Running PHP as an Apache module
        !          1650: 
        !          1651:    When   using  PHP  as  an  Apache  module,  you  can  also  change  the
        !          1652:    configuration  settings  using directives in Apache configuration files
        !          1653:    (e.g.  httpd.conf)  and  .htaccess  files. You will need "AllowOverride
        !          1654:    Options" or "AllowOverride All" privileges to do so.
        !          1655: 
        !          1656:    There  are  several  Apache directives that allow you to change the PHP
        !          1657:    configuration from within the Apache configuration files. For a listing
        !          1658:    of which directives are PHP_INI_ALL, PHP_INI_PERDIR, or PHP_INI_SYSTEM,
        !          1659:    have a look at the List of php.ini directives appendix.
        !          1660: 
        !          1661:    php_value name value
        !          1662:           Sets the value of the specified directive. Can be used only with
        !          1663:           PHP_INI_ALL  and  PHP_INI_PERDIR  type  directives.  To  clear a
        !          1664:           previously set value use none as the value.
        !          1665: 
        !          1666:      Note:  Don't  use  php_value  to  set  boolean values. php_flag (see
        !          1667:      below) should be used instead.
        !          1668: 
        !          1669:    php_flag name on|off
        !          1670:           Used  to set a boolean configuration directive. Can be used only
        !          1671:           with PHP_INI_ALL and PHP_INI_PERDIR type directives.
        !          1672: 
        !          1673:    php_admin_value name value
        !          1674:           Sets  the value of the specified directive. This can not be used
        !          1675:           in  .htaccess files. Any directive type set with php_admin_value
        !          1676:           can  not  be  overridden  by  .htaccess or ini_set(). To clear a
        !          1677:           previously set value use none as the value.
        !          1678: 
        !          1679:    php_admin_flag name on|off
        !          1680:           Used  to  set a boolean configuration directive. This can not be
        !          1681:           used   in   .htaccess   files.   Any  directive  type  set  with
        !          1682:           php_admin_flag can not be overridden by .htaccess or ini_set().
        !          1683: 
        !          1684:    Example #1 Apache configuration example
        !          1685: <IfModule mod_php5.c>
        !          1686:   php_value include_path ".:/usr/local/lib/php"
        !          1687:   php_admin_flag engine on
        !          1688: </IfModule>
        !          1689: <IfModule mod_php4.c>
        !          1690:   php_value include_path ".:/usr/local/lib/php"
        !          1691:   php_admin_flag engine on
        !          1692: </IfModule>
        !          1693: 
        !          1694:    Caution
        !          1695: 
        !          1696:    PHP  constants  do not exist outside of PHP. For example, in httpd.conf
        !          1697:    you  can  not  use  PHP  constants such as E_ALL or E_NOTICE to set the
        !          1698:    error_reporting  directive  as  they  will  have  no  meaning  and will
        !          1699:    evaluate  to  0.  Use  the  associated  bitmask  values  instead. These
        !          1700:    constants can be used in php.ini
        !          1701: 
        !          1702: Changing PHP configuration via the Windows registry
        !          1703: 
        !          1704:    When  running  PHP on Windows, the configuration values can be modified
        !          1705:    on  a per-directory basis using the Windows registry. The configuration
        !          1706:    values  are  stored in the registry key HKLM\SOFTWARE\PHP\Per Directory
        !          1707:    Values,  in  the sub-keys corresponding to the path names. For example,
        !          1708:    configuration  values  for  the  directory  c:\inetpub\wwwroot would be
        !          1709:    stored      in      the     key     HKLM\SOFTWARE\PHP\Per     Directory
        !          1710:    Values\c\inetpub\wwwroot.  The  settings  for  the  directory  would be
        !          1711:    active  for  any script running from this directory or any subdirectory
        !          1712:    of  it.  The  values  under  the  key  should  have the name of the PHP
        !          1713:    configuration  directive  and  the  string  value. PHP constants in the
        !          1714:    values are not parsed. However, only configuration values changeable in
        !          1715:    PHP_INI_USER can be set this way, PHP_INI_PERDIR values can not.
        !          1716: 
        !          1717: Other interfaces to PHP
        !          1718: 
        !          1719:    Regardless of how you run PHP, you can change certain values at runtime
        !          1720:    of  your  scripts  through  ini_set().  See  the  documentation  on the
        !          1721:    ini_set() page for more information.
        !          1722: 
        !          1723:    If  you  are interested in a complete list of configuration settings on
        !          1724:    your  system  with  their current values, you can execute the phpinfo()
        !          1725:    function, and review the resulting page. You can also access the values
        !          1726:    of  individual  configuration  directives at runtime using ini_get() or
        !          1727:    get_cfg_var().
        !          1728:      __________________________________________________________________
        !          1729:      __________________________________________________________________
        !          1730:      __________________________________________________________________
        !          1731: 
        !          1732: Installation
        !          1733: 
        !          1734:    This  section  holds common questions about the way to install PHP. PHP
        !          1735:    is available for almost any OS (except maybe for MacOS before OSX), and
        !          1736:    almost any web server.
        !          1737: 
        !          1738:    To install PHP, follow the instructions in Installing PHP.
        !          1739:     1. Why  shouldn't  I  use  Apache2 with a threaded MPM in a production
        !          1740:        environment?
        !          1741:     2. Unix/Windows: Where should my php.ini file be located?
        !          1742:     3. Unix:  I installed PHP, but every time I load a document, I get the
        !          1743:        message 'Document Contains No Data'! What's going on here?
        !          1744:     4. Unix:  I  installed PHP using RPMS, but Apache isn't processing the
        !          1745:        PHP pages! What's going on here?
        !          1746:     5. Unix:  I  patched  Apache  with the FrontPage extensions patch, and
        !          1747:        suddenly  PHP  stopped working. Is PHP incompatible with the Apache
        !          1748:        FrontPage extensions?
        !          1749:     6. Unix/Windows:  I have installed PHP, but when I try to access a PHP
        !          1750:        script file via my browser, I get a blank screen.
        !          1751:     7. Unix/Windows:  I  have  installed PHP, but when try to access a PHP
        !          1752:        script file via my browser, I get a server 500 error.
        !          1753:     8. Some  operating  systems:  I have installed PHP without errors, but
        !          1754:        when  I  try  to  start  Apache  I  get  undefined  symbol  errors:
        !          1755:        [mybox:user   /src/php5]   root#  apachectl  configtest  apachectl:
        !          1756:        /usr/local/apache/bin/httpd     Undefined     symbols:    _compress
        !          1757:        _uncompress
        !          1758:     9. Windows:  I  have  installed  PHP,  but  when I try to access a PHP
        !          1759:        script  file  via  my  browser,  I  get  the  error: cgi error: The
        !          1760:        specified  CGI  application  misbehaved by not returning a complete
        !          1761:        set of HTTP headers. The headers it did return are:
        !          1762:    10. Windows:  I've  followed  all the instructions, but still can't get
        !          1763:        PHP and IIS to work together!
        !          1764:    11. When  running  PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get
        !          1765:        the  following  error:  Security  Alert! PHP CGI cannot be accessed
        !          1766:        directly..
        !          1767:    12. How  do I know if my php.ini is being found and read? It seems like
        !          1768:        it isn't as my changes aren't being implemented.
        !          1769:    13. How do I add my PHP directory to the PATH on Windows?
        !          1770:    14. How do I make the php.ini file available to PHP on windows?
        !          1771:    15. Is  it  possible  to  use  Apache  content  negotiation (MultiViews
        !          1772:        option) with PHP?
        !          1773:    16. Is PHP limited to process GET and POST request methods only?
        !          1774: 
        !          1775:    Why shouldn't I use Apache2 with a threaded MPM in a production
        !          1776:           environment?
        !          1777:           PHP  is glue. It is the glue used to build cool web applications
        !          1778:           by sticking dozens of 3rd-party libraries together and making it
        !          1779:           all  appear as one coherent entity through an intuitive and easy
        !          1780:           to  learn  language  interface. The flexibility and power of PHP
        !          1781:           relies  on  the  stability  and  robustness  of  the  underlying
        !          1782:           platform.  It  needs  a  working  OS,  a  working web server and
        !          1783:           working  3rd-party libraries to glue together. When any of these
        !          1784:           stop  working  PHP  needs  ways to identify the problems and fix
        !          1785:           them  quickly.  When  you  make  the  underlying  framework more
        !          1786:           complex  by  not  having  completely separate execution threads,
        !          1787:           completely  separate  memory  segments  and a strong sandbox for
        !          1788:           each  request to play in, further weaknesses are introduced into
        !          1789:           PHP's system.
        !          1790: 
        !          1791:           If  you  feel  you have to use a threaded MPM, look at a FastCGI
        !          1792:           configuration where PHP is running in its own memory space.
        !          1793: 
        !          1794:           And finally, this warning against using a threaded MPM is not as
        !          1795:           strong  for  Windows  systems  because  most  libraries  on that
        !          1796:           platform tend to be threadsafe.
        !          1797: 
        !          1798:    Unix/Windows: Where should my php.ini file be located?
        !          1799:           By  default  on  Unix  it  should  be in /usr/local/lib which is
        !          1800:           <install-path>/lib.  Most  people  will  want  to change this at
        !          1801:           compile-time  with  the --with-config-file-path flag. You would,
        !          1802:           for example, set it with something like:
        !          1803: 
        !          1804: --with-config-file-path=/etc
        !          1805: 
        !          1806:           And   then   you   would   copy   php.ini-development  from  the
        !          1807:           distribution  to  /etc/php.ini  and  edit  it  to make any local
        !          1808:           changes you want.
        !          1809: 
        !          1810: --with-config-file-scan-dir=PATH
        !          1811: 
        !          1812:           On  Windows the default path for the php.ini file is the Windows
        !          1813:           directory.  If  you're  using  the  Apache webserver, php.ini is
        !          1814:           first searched in the Apaches install directory, e.g. c:\program
        !          1815:           files\apache  group\apache.  This  way  you  can  have different
        !          1816:           php.ini  files  for  different  versions  of  Apache on the same
        !          1817:           machine.
        !          1818: 
        !          1819:           See also the chapter about the configuration file.
        !          1820: 
        !          1821:    Unix: I installed PHP, but every time I load a document, I get the
        !          1822:           message 'Document Contains No Data'! What's going on here?
        !          1823:           This  probably means that PHP is having some sort of problem and
        !          1824:           is core-dumping. Look in your server error log to see if this is
        !          1825:           the  case,  and  then  try to reproduce the problem with a small
        !          1826:           test case. If you know how to use 'gdb', it is very helpful when
        !          1827:           you  can  provide  a  backtrace with your bug report to help the
        !          1828:           developers  pinpoint  the  problem.  If  you are using PHP as an
        !          1829:           Apache module try something like:
        !          1830: 
        !          1831:           + Stop your httpd processes
        !          1832:           + gdb httpd
        !          1833:           + Stop your httpd processes
        !          1834:           + > run -X -f /path/to/httpd.conf
        !          1835:           + Then fetch the URL causing the problem with your browser
        !          1836:           + > run -X -f /path/to/httpd.conf
        !          1837:           + If  you are getting a core dump, gdb should inform you of this
        !          1838:             now
        !          1839:           + type: bt
        !          1840:           + You  should  include  your  backtrace in your bug report. This
        !          1841:             should be submitted to » http://bugs.php.net/
        !          1842: 
        !          1843:           If   your   script   uses   the   regular  expression  functions
        !          1844:           (preg_match()  and  friends),  you  should  make  sure  that you
        !          1845:           compiled  PHP  and  Apache  with  the  same  regular  expression
        !          1846:           package.  This  should  happen automatically with PHP and Apache
        !          1847:           1.3.x
        !          1848: 
        !          1849:    Unix: I installed PHP using RPMS, but Apache isn't processing the PHP
        !          1850:           pages! What's going on here?
        !          1851:           Assuming  you  installed  both Apache and PHP from RPM packages,
        !          1852:           you  need to uncomment or add some or all of the following lines
        !          1853:           in your httpd.conf file:
        !          1854: 
        !          1855: # Extra Modules
        !          1856: AddModule mod_php.c
        !          1857: AddModule mod_perl.c
        !          1858: 
        !          1859: # Extra Modules
        !          1860: LoadModule php_module         modules/mod_php.so
        !          1861: LoadModule php5_module        modules/libphp5.so
        !          1862: LoadModule perl_module        modules/libperl.so
        !          1863: 
        !          1864:           And add:
        !          1865: 
        !          1866: AddType application/x-httpd-php .php
        !          1867: 
        !          1868:           ...  to  the  global  properties,  or  to  the properties of the
        !          1869:           VirtualDomain you want to have PHP support added to.
        !          1870: 
        !          1871:    Unix: I patched Apache with the FrontPage extensions patch, and
        !          1872:           suddenly PHP stopped working. Is PHP incompatible with the
        !          1873:           Apache FrontPage extensions?
        !          1874:           No, PHP works fine with the FrontPage extensions. The problem is
        !          1875:           that  the  FrontPage  patch  modifies several Apache structures,
        !          1876:           that  PHP relies on. Recompiling PHP (using 'make clean ; make')
        !          1877:           after the FP patch is applied would solve the problem.
        !          1878: 
        !          1879:    Unix/Windows: I have installed PHP, but when I try to access a PHP
        !          1880:           script file via my browser, I get a blank screen.
        !          1881:           Do a 'view source' in the web browser and you will probably find
        !          1882:           that  you can see the source code of your PHP script. This means
        !          1883:           that  the  web  server  did  not  send  the  script  to  PHP for
        !          1884:           interpretation. Something is wrong with the server configuration
        !          1885:           -   double  check  the  server  configuration  against  the  PHP
        !          1886:           installation instructions.
        !          1887: 
        !          1888:    Unix/Windows: I have installed PHP, but when try to access a PHP script
        !          1889:           file via my browser, I get a server 500 error.
        !          1890:           Something went wrong when the server tried to run PHP. To get to
        !          1891:           see  a  sensible error message, from the command line, change to
        !          1892:           the directory containing the PHP executable (php.exe on Windows)
        !          1893:           and run php -i. If PHP has any problems running, then a suitable
        !          1894:           error message will be displayed which will give you a clue as to
        !          1895:           what  needs  to  be  done next. If you get a screen full of HTML
        !          1896:           codes  (the  output  of  the  phpinfo()  function)  then  PHP is
        !          1897:           working,  and  your  problem  may  be  related  to  your  server
        !          1898:           configuration which you should double check.
        !          1899: 
        !          1900:    Some operating systems: I have installed PHP without errors, but when I
        !          1901:           try to start Apache I get undefined symbol errors:
        !          1902: 
        !          1903: [mybox:user /src/php5] root# apachectl configtest
        !          1904:  apachectl: /usr/local/apache/bin/httpd Undefined symbols:
        !          1905:   _compress
        !          1906:   _uncompress
        !          1907: 
        !          1908:           This  has  actually  nothing  to do with PHP, but with the MySQL
        !          1909:           client libraries. Some need --with-zlib , others do not. This is
        !          1910:           also covered in the MySQL FAQ.
        !          1911: 
        !          1912:    Windows: I have installed PHP, but when I try to access a PHP script
        !          1913:           file via my browser, I get the error:
        !          1914: 
        !          1915: cgi error:
        !          1916:  The specified CGI application misbehaved by not
        !          1917:  returning a complete set of HTTP headers.
        !          1918:  The headers it did return are:
        !          1919: 
        !          1920:           This  error  message means that PHP failed to output anything at
        !          1921:           all.  To  get  to see a sensible error message, from the command
        !          1922:           line,  change  to  the  directory  containing the PHP executable
        !          1923:           (php.exe  on  Windows)  and  run php -i. If PHP has any problems
        !          1924:           running,  then  a suitable error message will be displayed which
        !          1925:           will  give  you  a clue as to what needs to be done next. If you
        !          1926:           get  a  screen  full  of HTML codes (the output of the phpinfo()
        !          1927:           function) then PHP is working.
        !          1928: 
        !          1929:           Once  PHP  is  working  at  the  command line, try accessing the
        !          1930:           script via the browser again. If it still fails then it could be
        !          1931:           one of the following:
        !          1932: 
        !          1933:           + File  permissions  on  your  PHP  script, php.exe, php5ts.dll,
        !          1934:             php.ini  or any PHP extensions you are trying to load are such
        !          1935:             that  the  anonymous  internet  user ISUR_<machinename> cannot
        !          1936:             access them.
        !          1937:           + The  script  file  does not exist (or possibly isn't where you
        !          1938:             think  it  is  relative to your web root directory). Note that
        !          1939:             for  IIS  you  can  trap this error by ticking the 'check file
        !          1940:             exists'  box  when  setting  up  the  script  mappings  in the
        !          1941:             Internet  Services  Manager.  If  a script file does not exist
        !          1942:             then the server will return a 404 error instead. There is also
        !          1943:             the  additional  benefit  that  IIS will do any authentication
        !          1944:             required  for  you  based  on the NTLanMan permissions on your
        !          1945:             script file.
        !          1946: 
        !          1947:    Windows: I've followed all the instructions, but still can't get PHP
        !          1948:           and IIS to work together!
        !          1949:           Make  sure any user who needs to run a PHP script has the rights
        !          1950:           to run php.exe! IIS uses an anonymous user which is added at the
        !          1951:           time  IIS is installed. This user needs rights to php.exe. Also,
        !          1952:           any authenticated user will also need rights to execute php.exe.
        !          1953:           And  for  IIS4  you need to tell it that PHP is a script engine.
        !          1954:           Also, you will want to read this faq.
        !          1955: 
        !          1956:    When running PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get the
        !          1957:           following error: Security Alert! PHP CGI cannot be accessed
        !          1958:           directly..
        !          1959:           You  must set the cgi.force_redirect directive to 0. It defaults
        !          1960:           to  1  so  be sure the directive isn't commented out (with a ;).
        !          1961:           Like all directives, this is set in php.ini
        !          1962: 
        !          1963:           Because  the  default  is 1, it's critical that you're 100% sure
        !          1964:           that  the  correct php.ini file is being read. Read this faq for
        !          1965:           details.
        !          1966: 
        !          1967:    How do I know if my php.ini is being found and read? It seems like it
        !          1968:           isn't as my changes aren't being implemented.
        !          1969:           To  be  sure  your  php.ini is being read by PHP, make a call to
        !          1970:           phpinfo().  Near  the  top,  there  will  be  a  listing  called
        !          1971:           Configuration  File  (php.ini).  This will tell you where PHP is
        !          1972:           looking  for php.ini and whether or not it's being read. If just
        !          1973:           a  directory  PATH  exists,  then  it's  not being read, and you
        !          1974:           should  put  your  php.ini  in  that  directory.  If  php.ini is
        !          1975:           included within the PATH, it is being read.
        !          1976: 
        !          1977:           If  php.ini  is  being  read and you're running PHP as a module,
        !          1978:           then  be sure to restart your web server after making changes to
        !          1979:           php.ini
        !          1980: 
        !          1981:           See also php_ini_loaded_file().
        !          1982: 
        !          1983:    How do I add my PHP directory to the PATH on Windows?
        !          1984:           On Windows NT+ and Windows Server 2000+:
        !          1985: 
        !          1986:           + Go  to  Control  Panel  and  open  the  System  icon (Start ->
        !          1987:             Settings  -> Control Panel -> System, or just Start -> Control
        !          1988:             Panel -> System for Windows XP/2003+)
        !          1989:           + Go to the Advanced tab
        !          1990:           + Click on the 'Environment Variables' button
        !          1991:           + Look into the 'System Variables' pane
        !          1992:           + Find the Path entry (you may need to scroll to find it)
        !          1993:           + Double click on the Path entry
        !          1994:           + Enter  your  PHP  directory  at  the end, including ';' before
        !          1995:             (e.g. ;C:\php)
        !          1996:           + Press OK
        !          1997: 
        !          1998:           On Windows 98/Me you need to edit the autoexec.bat file:
        !          1999: 
        !          2000:           + Open the Notepad (Start -> Run and enter notepad)
        !          2001:           + Open the C:\autoexec.bat file
        !          2002:           + Locate  the line with PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;.....
        !          2003:             and add: ;C:\php to the end of the line
        !          2004:           + Save the file and restart your computer
        !          2005: 
        !          2006:      Note:  Be  sure  to reboot after following the steps above to ensure
        !          2007:      that the PATH changes are applied.
        !          2008: 
        !          2009:           The  PHP  manual  used  to promote the copying of files into the
        !          2010:           Windows   system  directory,  this  is  because  this  directory
        !          2011:           (C:\Windows,  C:\WINNT, etc.) is by default in the systems PATH.
        !          2012:           Copying  files  into the Windows system directory has long since
        !          2013:           been deprecated and may cause problems.
        !          2014: 
        !          2015:    How do I make the php.ini file available to PHP on windows?
        !          2016:           There  are  several ways of doing this. If you are using Apache,
        !          2017:           read  their installation specific instructions (Apache 1, Apache
        !          2018:           2), otherwise you must set the PHPRC environment variable:
        !          2019: 
        !          2020:           On Windows NT, 2000, XP and 2003:
        !          2021: 
        !          2022:           + Go  to  Control  Panel  and  open  the  System  icon (Start ->
        !          2023:             Settings  -> Control Panel -> System, or just Start -> Control
        !          2024:             Panel -> System for Windows XP/2003)
        !          2025:           + Go to the Advanced tab
        !          2026:           + Click on the 'Environment Variables' button
        !          2027:           + Look into the 'System variables' pane
        !          2028:           + Click  on 'New' and enter 'PHPRC' as the variable name and the
        !          2029:             directory where php.ini is located as the variable value (e.g.
        !          2030:             C:\php)
        !          2031:           + Press OK and restart your computer
        !          2032: 
        !          2033:           On Windows 98/Me you need to edit the autoexec.bat file:
        !          2034: 
        !          2035:           + Open the Notepad (Start -> Run and enter notepad)
        !          2036:           + Open the C:\autoexec.bat file
        !          2037:           + Add  a  new  line  to  the  end  of the file: set PHPRC=C:\php
        !          2038:             (replace  C:\php with the directory where php.ini is located).
        !          2039:             Please note that the path cannot contain spaces. For instance,
        !          2040:             if  you  have installed PHP in C:\Program Files\PHP, you would
        !          2041:             enter C:\PROGRA~1\PHP instead.
        !          2042:           + Save the file and restart your computer
        !          2043: 
        !          2044:    Is it possible to use Apache content negotiation (MultiViews option)
        !          2045:           with PHP?
        !          2046:           If  links  to  PHP  files  include  extension,  everything works
        !          2047:           perfect.  This  FAQ is only for the case when links to PHP files
        !          2048:           don't  include extension and you want to use content negotiation
        !          2049:           to  choose  PHP  files from URL with no extension. In this case,
        !          2050:           replace the line AddType application/x-httpd-php .php with:
        !          2051: 
        !          2052: AddHandler php5-script php
        !          2053: AddType text/html php
        !          2054: 
        !          2055:           This  solution  doesn't  work for Apache 1 as PHP module doesn't
        !          2056:           catch php-script.
        !          2057: 
        !          2058:    Is PHP limited to process GET and POST request methods only?
        !          2059:           No,  it  is possible to handle any request method, e.g. CONNECT.
        !          2060:           Proper  response  status  can be sent with header(). If only GET
        !          2061:           and POST methods should be handled, it can be achieved with this
        !          2062:           Apache configuration:
        !          2063: 
        !          2064: <LimitExcept GET POST>
        !          2065: Deny from all
        !          2066: </LimitExcept>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>