home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / xampp-win32-1.6.7-installer.exe / php / install.txt < prev    next >
Text File  |  2007-12-20  |  96KB  |  2,177 lines

  1. Installing PHP
  2.      __________________________________________________________________
  3.  
  4.    Table of Contents
  5.    Preface
  6.    1. General Installation Considerations
  7.    2. Installation on Windows systems
  8.  
  9.         Windows Installer (PHP 5.2 and later)
  10.         Windows Installer (PHP 5.1.0 and earlier)
  11.         Manual Installation Steps
  12.         ActiveScript
  13.         Microsoft IIS / PWS
  14.         Apache 1.3.x on Microsoft Windows
  15.         Apache 2.0.x on Microsoft Windows
  16.         Sun, iPlanet and Netscape servers on Microsoft Windows
  17.         OmniHTTPd Server
  18.         Sambar Server on Microsoft Windows
  19.         Xitami on Microsoft Windows
  20.         Installation of extensions on Windows
  21.  
  22.    3. Installation of PECL extensions
  23.  
  24.         Introduction to PECL Installations
  25.         Downloading PECL extensions
  26.         PECL for Windows users
  27.         Compiling shared PECL extensions with the pecl command
  28.         Compiling shared PECL extensions with phpize
  29.         Compiling PECL extensions statically into PHP
  30.  
  31.    4. Problems?
  32.  
  33.         Read the FAQ
  34.         Other problems
  35.         Bug reports
  36.  
  37.    5. Runtime Configuration
  38.  
  39.         The configuration file
  40.         How to change configuration settings
  41.  
  42.    6. Installation FAQ
  43.      __________________________________________________________________
  44.  
  45. Preface
  46.  
  47.    These installation instructions were generated from the HTML version of
  48.    the PHP Manual so formatting and linking have been altered. See the
  49.    online and updated version at: http://php.net/install.windows
  50.      __________________________________________________________________
  51.  
  52. Chapter 1. General Installation Considerations
  53.  
  54.    Before starting the installation, first you need to know what do you
  55.    want to use PHP for. There are three main fields you can use PHP, as
  56.    described in the What can PHP do? section:
  57.  
  58.      * Websites and web applications (server-side scripting)
  59.      * Command line scripting
  60.      * Desktop (GUI) applications
  61.  
  62.    For the first and most common form, you need three things: PHP itself,
  63.    a web server and a web browser. You probably already have a web
  64.    browser, and depending on your operating system setup, you may also
  65.    have a web server (e.g. Apache on Linux and MacOS X; IIS on Windows).
  66.    You may also rent webspace at a company. This way, you don't need to
  67.    set up anything on your own, only write your PHP scripts, upload it to
  68.    the server you rent, and see the results in your browser.
  69.  
  70.    In case of setting up the server and PHP on your own, you have two
  71.    choices for the method of connecting PHP to the server. For many
  72.    servers PHP has a direct module interface (also called SAPI). These
  73.    servers include Apache, Microsoft Internet Information Server, Netscape
  74.    and iPlanet servers. Many other servers have support for ISAPI, the
  75.    Microsoft module interface (OmniHTTPd for example). If PHP has no
  76.    module support for your web server, you can always use it as a CGI or
  77.    FastCGI processor. This means you set up your server to use the CGI
  78.    executable of PHP to process all PHP file requests on the server.
  79.  
  80.    If you are also interested to use PHP for command line scripting (e.g.
  81.    write scripts autogenerating some images for you offline, or processing
  82.    text files depending on some arguments you pass to them), you always
  83.    need the command line executable. For more information, read the
  84.    section about writing command line PHP applications. In this case, you
  85.    need no server and no browser.
  86.  
  87.    With PHP you can also write desktop GUI applications using the PHP-GTK
  88.    extension. This is a completely different approach than writing web
  89.    pages, as you do not output any HTML, but manage Windows and objects
  90.    within them. For more information about PHP-GTK, please visit the site
  91.    dedicated to this extension. PHP-GTK is not included in the official
  92.    PHP distribution.
  93.  
  94.    From now on, this section deals with setting up PHP for web servers on
  95.    Unix and Windows with server module interfaces and CGI executables. You
  96.    will also find information on the command line executable in the
  97.    following sections.
  98.  
  99.    PHP source code and binary distributions for Windows can be found at
  100.    http://www.php.net/downloads.php. We recommend you to choose a mirror
  101.    nearest to you for downloading the distributions.
  102.      __________________________________________________________________
  103.  
  104. Chapter 2. Installation on Windows systems
  105.  
  106.    This section applies to Windows 98/Me and Windows NT/2000/XP/2003. PHP
  107.    will not work on 16 bit platforms such as Windows 3.1 and sometimes we
  108.    refer to the supported Windows platforms as Win32. Windows 95 is no
  109.    longer supported as of PHP 4.3.0.
  110.  
  111.    There are two main ways to install PHP for Windows: either manually or
  112.    by using the installer.
  113.  
  114.    If you have Microsoft Visual Studio, you can also build PHP from the
  115.    original source code.
  116.  
  117.    Once you have PHP installed on your Windows system, you may also want
  118.    to load various extensions for added functionality.
  119.  
  120.    Warning
  121.  
  122.    There are several all-in-one installers over the Internet, but none of
  123.    those are endorsed by PHP.net, as we believe that the manual
  124.    installation is the best choice to have your system secure and
  125.    optimised.
  126.      __________________________________________________________________
  127.  
  128. Windows Installer (PHP 5.2 and later)
  129.  
  130.    The Windows PHP installer for later versions of PHP is built using MSI
  131.    technology using the Wix Toolkit (http://wix.sourceforge.net/). It will
  132.    install and configure PHP and all the built-in and PECL extensions, as
  133.    well as configure many of the popular web servers such as IIS, Apache,
  134.    and Xitami.
  135.  
  136.    First, install your selected HTTP (web) server on your system, and make
  137.    sure that it works. Then proceed with one of the following install
  138.    types.
  139.      __________________________________________________________________
  140.  
  141. Normal Install
  142.  
  143.    Run the MSI installer and follow the instructions provided by the
  144.    installation wizard. You will be prompted to select the Web Server you
  145.    wish to configure first, along with any configuration details needed.
  146.  
  147.    You will then be prompted to select which features and extensions you
  148.    wish to install and enable. By selecting "Will be installed on local
  149.    hard drive" in the drop-down menu for each item you can trigger whether
  150.    to install the feature or not. By selecting "Entire feature will be
  151.    installed on local hard drive", you will be able to install all
  152.    sub-features of the included feature ( for example by selecting this
  153.    options for the feature "PDO" you will install all PDO Drivers ).
  154.  
  155.    Warning
  156.  
  157.    It is not recommended to install all extensions by default, since many
  158.    other them require dependencies from outside PHP in order to function
  159.    properly. Instead, use the Installation Repair Mode that can be
  160.    triggered thru the 'Add/Remove Programs' control panel to enable or
  161.    disable extensions and features after installation.
  162.  
  163.    The installer then sets up PHP to be used in Windows and the php.ini
  164.    file, and configures certain web servers to use PHP. The installer will
  165.    currently configure IIS (CGI mode only), Apache, Xitami, and Sambar
  166.    Server; if you are using a different web server you'll need to
  167.    configure it manually.
  168.      __________________________________________________________________
  169.  
  170. Silent Install
  171.  
  172.    The installer also supports a silent mode, which is helpful for Systems
  173.    Administrators to deploy PHP easily. To use silent mode:
  174.    msiexec.exe /i php-VERSION-win32-install.msi /q
  175.  
  176.    You can control the install directory by passing it as a parameter to
  177.    the install. For example, to install to e:\php:
  178.    msiexec.exe /i php-VERSION-win32-install.msi /q INSTALLDIR=e:\php
  179.  
  180.    You can also use the same syntax to specify the Apache Configuration
  181.    Directory (APACHEDIR), the Sambar Server directory (SAMBARDIR), and the
  182.    Xitami Server directory (XITAMIDIR).
  183.  
  184.    You can also specify what features to install. For example, to install
  185.    the mysqli extension and the CGI executable:
  186.    msiexec.exe /i php-VERSION-win32-install.msi /q ADDLOCAL=cgi,ext_php_mysqli
  187.  
  188.    The current list of Features to install is as follows:
  189. MainExecutable - php.exe executable
  190. ScriptExecutable - php-win.exe executable
  191. ext_php_* - the various extensions ( for example: ext_php_mysql for MySQL )
  192. apache13 - Apache 1.3 module
  193. apache20 - Apache 2.0 module
  194. apache22 - Apache 2,2 module
  195. apacheCGI - Apache CGI executable
  196. iis4ISAPI - IIS ISAPI module
  197. iis4CGI - IIS CGI executable
  198. NSAPI - Sun/iPlanet/Netscape server module
  199. Xitami - Xitami CGI executable
  200. Sambar - Sambar Server ISAPI module
  201. CGI - php-cgi.exe executable
  202. PEAR - PEAR installer
  203. Manual - PHP Manual in CHM Format
  204.  
  205.    For more information on installing MSI installers from the command
  206.    line, visit
  207.    http://msdn.microsoft.com/library/en-us/msi/setup/command_line_options.
  208.    asp
  209.      __________________________________________________________________
  210.  
  211. Windows Installer (PHP 5.1.0 and earlier)
  212.  
  213.    The Windows PHP installer is available from the downloads page at
  214.    http://www.php.net/downloads.php. This installs the CGI version of PHP
  215.    and for IIS, PWS, and Xitami, it configures the web server as well. The
  216.    installer does not include any extra external PHP extensions
  217.    (php_*.dll) as you'll only find those in the Windows Zip Package and
  218.    PECL downloads.
  219.  
  220.      Note: While the Windows installer is an easy way to make PHP work,
  221.      it is restricted in many aspects as, for example, the automatic
  222.      setup of extensions is not supported. Use of the installer isn't the
  223.      preferred method for installing PHP.
  224.  
  225.    First, install your selected HTTP (web) server on your system, and make
  226.    sure that it works.
  227.  
  228.    Run the executable installer and follow the instructions provided by
  229.    the installation wizard. Two types of installation are supported -
  230.    standard, which provides sensible defaults for all the settings it can,
  231.    and advanced, which asks questions as it goes along.
  232.  
  233.    The installation wizard gathers enough information to set up the
  234.    php.ini file, and configure certain web servers to use PHP. One of the
  235.    web servers the PHP installer does not configure for is Apache, so
  236.    you'll need to configure it manually.
  237.  
  238.    Once the installation has completed, the installer will inform you if
  239.    you need to restart your system, restart the server, or just start
  240.    using PHP.
  241.  
  242.    Warning
  243.  
  244.    Be aware, that this setup of PHP is not secure. If you would like to
  245.    have a secure PHP setup, you'd better go on the manual way, and set
  246.    every option carefully. This automatically working setup gives you an
  247.    instantly working PHP installation, but it is not meant to be used on
  248.    online servers.
  249.      __________________________________________________________________
  250.  
  251. Manual Installation Steps
  252.  
  253.    This install guide will help you manually install and configure PHP
  254.    with a web server on Microsoft Windows. To get started you'll need to
  255.    download the zip binary distribution from the downloads page at
  256.    http://www.php.net/downloads.php.
  257.  
  258.    Although there are many all-in-one installation kits, and we also
  259.    distribute a PHP installer for Microsoft Windows, we recommend you take
  260.    the time to setup PHP yourself as this will provide you with a better
  261.    understanding of the system, and enables you to install PHP extensions
  262.    easily when needed.
  263.  
  264.      Upgrading from a previous PHP version: Previous editions of the
  265.      manual suggest moving various ini and DLL files into your SYSTEM
  266.      (i.e. C:\WINDOWS) folder and while this simplifies the installation
  267.      procedure it makes upgrading difficult. We advise you remove all of
  268.      these files (like php.ini and PHP related DLLs from the Windows
  269.      SYSTEM folder) before moving on with a new PHP installation. Be sure
  270.      to backup these files as you might break the entire system. The old
  271.      php.ini might be useful in setting up the new PHP as well. And as
  272.      you'll soon learn, the preferred method for installing PHP is to
  273.      keep all PHP related files in one directory and have this directory
  274.      available to your systems PATH.
  275.  
  276.      MDAC requirements: If you use Microsoft Windows 98/NT4 download the
  277.      latest version of the Microsoft Data Access Components (MDAC) for
  278.      your platform. MDAC is available at http://msdn.microsoft.com/data/.
  279.      This requirement exists because ODBC is built into the distributed
  280.      Windows binaries.
  281.  
  282.    The following steps should be completed on all installations before any
  283.    server specific instructions are performed:
  284.  
  285.    Extract the distribution file into a directory of your choice. If you
  286.    are installing PHP 4, extract to C:\, as the zip file expands to a
  287.    foldername like php-4.3.7-Win32. If you are installing PHP 5, extract
  288.    to C:\php as the zip file doesn't expand as in PHP 4. You may choose a
  289.    different location but do not have spaces in the path (like C:\Program
  290.    Files\PHP) as some web servers will crash if you do.
  291.  
  292.    The directory structure extracted from the zip is different for PHP
  293.    versions 4 and 5 and look like as follows:
  294.  
  295.    Example 2-1. PHP 4 package structure
  296. c:\php
  297.    |
  298.    +--cli
  299.    |  |
  300.    |  |-php.exe           -- CLI executable - ONLY for command line scripting
  301.    |
  302.    +--dlls                -- support DLLs required by some extensions
  303.    |  |
  304.    |  |-expat.dll
  305.    |  |
  306.    |  |-fdftk.dll
  307.    |  |
  308.    |  |-...
  309.    |
  310.    +--extensions          -- extension DLLs for PHP
  311.    |  |
  312.    |  |-php_bz2.dll
  313.    |  |
  314.    |  |-php_cpdf.dll
  315.    |  |
  316.    |  |-..
  317.    |
  318.    +--mibs                -- support files for SNMP
  319.    |
  320.    +--openssl             -- support files for Openssl
  321.    |
  322.    +--pdf-related         -- support files for PDF
  323.    |
  324.    +--sapi                -- SAPI (server module support) DLLs
  325.    |  |
  326.    |  |-php4apache.dll
  327.    |  |
  328.    |  |-php4apache2.dll
  329.    |  |
  330.    |  |-..
  331.    |
  332.    +--PEAR                -- initial copy of PEAR
  333.    |
  334.    |
  335.    |-go-pear.bat          -- PEAR setup script
  336.    |
  337.    |-..
  338.    |
  339.    |-php.exe              -- CGI executable
  340.    |
  341.    |-..
  342.    |
  343.    |-php.ini-dist         -- default php.ini settings
  344.    |
  345.    |-php.ini-recommended  -- recommended php.ini settings
  346.    |
  347.    |-php4ts.dll           -- core PHP DLL
  348.    |
  349.    |-...
  350.  
  351.    Or:
  352.  
  353.    Example 2-2. PHP 5 package structure
  354. c:\php
  355.    |
  356.    +--dev
  357.    |  |
  358.    |  |-php5ts.lib
  359.    |
  360.    +--ext                 -- extension DLLs for PHP
  361.    |  |
  362.    |  |-php_bz2.dll
  363.    |  |
  364.    |  |-php_cpdf.dll
  365.    |  |
  366.    |  |-..
  367.    |
  368.    +--extras
  369.    |  |
  370.    |  +--mibs             -- support files for SNMP
  371.    |  |
  372.    |  +--openssl          -- support files for Openssl
  373.    |  |
  374.    |  +--pdf-related      -- support files for PDF
  375.    |  |
  376.    |  |-mime.magic
  377.    |
  378.    +--pear                -- initial copy of PEAR
  379.    |
  380.    |
  381.    |-go-pear.bat          -- PEAR setup script
  382.    |
  383.    |-fdftk.dll
  384.    |
  385.    |-..
  386.    |
  387.    |-php-cgi.exe          -- CGI executable
  388.    |
  389.    |-php-win.exe          -- executes scripts without an opened command prompt
  390.    |
  391.    |-php.exe              -- CLI executable - ONLY for command line scripting
  392.    |
  393.    |-..
  394.    |
  395.    |-php.ini-dist         -- default php.ini settings
  396.    |
  397.    |-php.ini-recommended  -- recommended php.ini settings
  398.    |
  399.    |-php5activescript.dll
  400.    |
  401.    |-php5apache.dll
  402.    |
  403.    |-php5apache2.dll
  404.    |
  405.    |-..
  406.    |
  407.    |-php5ts.dll           -- core PHP DLL
  408.    |
  409.    |-...
  410.  
  411.    Notice the differences and similarities. Both PHP 4 and PHP 5 have a
  412.    CGI executable, a CLI executable, and server modules, but they are
  413.    located in different folders and/or have different names. While PHP 4
  414.    packages have the server modules in the sapi folder, PHP 5
  415.    distributions have no such directory and instead they're in the PHP
  416.    folder root. The supporting DLLs for the PHP 5 extensions are also not
  417.    in a seperate directory.
  418.  
  419.      Note: In PHP 4, you should move all files located in the dll and
  420.      sapi folders to the main folder (e.g. C:\php).
  421.  
  422.    Here is a list of server modules shipped with PHP 4 and PHP 5:
  423.  
  424.      * sapi/php4activescript.dll (php5activescript.dll) - ActiveScript
  425.        engine, allowing you to embed PHP in your Windows applications.
  426.      * sapi/php4apache.dll (php5apache.dll) - Apache 1.3.x module.
  427.      * sapi/php4apache2.dll (php5apache2.dll) - Apache 2.0.x module.
  428.      * sapi/php5apache2_2.dll - Apache 2.2.x module.
  429.      * sapi/php4isapi.dll (php5isapi.dll) - ISAPI Module for ISAPI
  430.        compliant web servers like IIS 4.0/PWS 4.0 or newer.
  431.      * sapi/php4nsapi.dll (php5nsapi.dll) - Sun/iPlanet/Netscape server
  432.        module.
  433.      * sapi/php4pi3web.dll (no equivalent in PHP 5) - Pi3Web server
  434.        module.
  435.  
  436.    Server modules provide significantly better performance and additional
  437.    functionality compared to the CGI binary. The CLI version is designed
  438.    to let you use PHP for command line scripting. More information about
  439.    CLI is available in the chapter about using PHP from the command line.
  440.  
  441.    Warning
  442.  
  443.    The SAPI modules have been significantly improved as of the 4.1
  444.    release, however, in older systems you may encounter server errors or
  445.    other server modules failing, such as ASP.
  446.  
  447.    The CGI and CLI binaries, and the web server modules all require the
  448.    php4ts.dll (php5ts.dll) file to be available to them. You have to make
  449.    sure that this file can be found by your PHP installation. The search
  450.    order for this DLL is as follows:
  451.  
  452.      * The same directory from where php.exe is called, or in case you use
  453.        a SAPI module, the web server's directory (e.g. C:\Program
  454.        Files\Apache Group\Apache2\bin).
  455.      * Any directory in your Windows PATH environment variable.
  456.  
  457.    To make php4ts.dll / php5ts.dll available you have three options: copy
  458.    the file to the Windows system directory, copy the file to the web
  459.    server's directory, or add your PHP directory, C:\php to the PATH. For
  460.    better maintenance, we advise you to follow the last option, add C:\php
  461.    to the PATH, because it will be simpler to upgrade PHP in the future.
  462.    Read more about how to add your PHP directory to PATH in the
  463.    corresponding FAQ entry (and then don't forget to restart the computer
  464.    - logoff isn't enough).
  465.  
  466.    The next step is to set up a valid configuration file for PHP, php.ini.
  467.    There are two ini files distributed in the zip file, php.ini-dist and
  468.    php.ini-recommended. We advise you to use php.ini-recommended, because
  469.    we optimized the default settings in this file for performance, and
  470.    security. Read this well documented file carefully because it has
  471.    changes from php.ini-dist that will drastically affect your setup. Some
  472.    examples are display_errors being off and magic_quotes_gpc being off.
  473.    In addition to reading these, study the ini settings and set every
  474.    element manually yourself. If you would like to achieve the best
  475.    security, then this is the way for you, although PHP works fine with
  476.    these default ini files. Copy your chosen ini-file to a directory that
  477.    PHP is able to find and rename it to php.ini. PHP searches for php.ini
  478.    in the locations described in the Section called The configuration file
  479.    in Chapter 5 section.
  480.  
  481.    If you are running Apache 2, the simpler option is to use the PHPIniDir
  482.    directive (read the installation on Apache 2 page), otherwise your best
  483.    option is to set the PHPRC environment variable. This process is
  484.    explained in the following FAQ entry.
  485.  
  486.      Note: If you're using NTFS on Windows NT, 2000, XP or 2003, make
  487.      sure that the user running the web server has read permissions to
  488.      your php.ini (e.g. make it readable by Everyone).
  489.  
  490.    The following steps are optional:
  491.  
  492.      * Edit your new php.ini file. If you plan to use OmniHTTPd, do not
  493.        follow the next step. Set the doc_root to point to your web servers
  494.        document_root. For example:
  495.  
  496. doc_root = c:\inetpub\wwwroot // for IIS/PWS
  497.  
  498. doc_root = c:\apache\htdocs // for Apache
  499.  
  500.      * Choose the extensions you would like to load when PHP starts. See
  501.        the section about Windows extensions, about how to set up one, and
  502.        what is already built in. Note that on a new installation it is
  503.        advisable to first get PHP working and tested without any
  504.        extensions before enabling them in php.ini.
  505.      * On PWS and IIS, you can set the browscap configuration setting to
  506.        point to: c:\windows\system\inetsrv\browscap.ini on Windows 9x/Me,
  507.        c:\winnt\system32\inetsrv\browscap.ini on NT/2000, and
  508.        c:\windows\system32\inetsrv\browscap.ini on XP. For an up-to-date
  509.        browscap.ini, read the following FAQ.
  510.  
  511.    PHP is now setup on your system. The next step is to choose a web
  512.    server, and enable it to run PHP. Choose a web server from the table of
  513.    contents.
  514.      __________________________________________________________________
  515.  
  516. ActiveScript
  517.  
  518.    This section contains notes specific to the ActiveScript installation.
  519.  
  520.    ActiveScript is a Windows only SAPI that enables you to use PHP script
  521.    in any ActiveScript compliant host, like Windows Script Host,
  522.    ASP/ASP.NET, Windows Script Components or Microsoft Scriptlet control.
  523.  
  524.    As of PHP 5.0.1, ActiveScript has been moved to the PECL repository.
  525.    The DLL for this PECL extension may be downloaded from either the PHP
  526.    Downloads page or from http://pecl4win.php.net/
  527.  
  528.      Note: You should read the manual installation steps first!
  529.  
  530.    After installing PHP, you should download the ActiveScript DLL
  531.    (php5activescript.dll) and place it in the main PHP folder (e.g.
  532.    C:\php).
  533.  
  534.    After having all the files needed, you must register the DLL on your
  535.    system. To achieve this, open a Command Prompt window (located in the
  536.    Start Menu). Then go to your PHP directory by typing something like cd
  537.    C:\php. To register the DLL just type regsvr32 php5activescript.dll.
  538.  
  539.    To test if ActiveScript is working, create a new file, named test.wsf
  540.    (the extension is very important) and type:
  541. <job id="test">
  542.  
  543.  <script language="PHPScript">
  544.   $WScript->Echo("Hello World!");
  545.  </script>
  546.  
  547. </job>
  548.  
  549.    Save and double-click on the file. If you receive a little window
  550.    saying "Hello World!" you're done.
  551.  
  552.      Note: In PHP 4, the engine was named 'ActivePHP', so if you are
  553.      using PHP 4, you should replace 'PHPScript' with 'ActivePHP' in the
  554.      above example.
  555.  
  556.      Note: ActiveScript doesn't use the default php.ini file. Instead, it
  557.      will look only in the same directory as the .exe that caused it to
  558.      load. You should create php-activescript.ini and place it in that
  559.      folder, if you wish to load extensions, etc.
  560.      __________________________________________________________________
  561.  
  562. Microsoft IIS / PWS
  563.  
  564.    This section contains notes and hints specific to IIS (Microsoft
  565.    Internet Information Server).
  566.  
  567.    Warning
  568.  
  569.    By using the CGI setup, your server is open to several possible
  570.    attacks. Please read our CGI security section to learn how to defend
  571.    yourself from those attacks.
  572.      __________________________________________________________________
  573.  
  574. General considerations for all installations of PHP with IIS or PWS
  575.  
  576.      * First, read the Manual Installation Instructions. Do not skip this
  577.        step as it provides crucial information for installing PHP on
  578.        Windows.
  579.      * CGI users must set the cgi.force_redirect PHP directive to 0 inside
  580.        php.ini. Read the faq on cgi.force_redirect for important details.
  581.        Also, CGI users may want to set the cgi.redirect_status_env
  582.        directive. When using directives, be sure these directives aren't
  583.        commented out inside php.ini.
  584.      * The PHP 4 CGI is named php.exe while in PHP 5 it's php-cgi.exe. In
  585.        PHP 5, php.exe is the CLI, and not the CGI.
  586.      * Modify the Windows PATH environment variable to include the PHP
  587.        directory. This way the PHP DLL files and PHP executables can all
  588.        remain in the PHP directory without cluttering up the Windows
  589.        system directory. For more details, see the FAQ on Setting the
  590.        PATH.
  591.      * The IIS user (usually IUSR_MACHINENAME) needs permission to read
  592.        various files and directories, such as php.ini, docroot, and the
  593.        session tmp directory.
  594.      * Be sure the extension_dir and doc_root PHP directives are
  595.        appropriately set in php.ini. These directives depend on the system
  596.        that PHP is being installed on. In PHP 4, the extension_dir is
  597.        extensions while with PHP 5 it's ext. So, an example PHP 5
  598.        extensions_dir value is "c:\php\ext" and an example IIS doc_root
  599.        value is "c:\Inetpub\wwwroot".
  600.      * PHP extension DLL files, such as php_mysql.dll and php_curl.dll,
  601.        are found in the zip package of the PHP download (not the PHP
  602.        installer). In PHP 5, many extensions are part of PECL and can be
  603.        downloaded in the "Collection of PECL modules" package. Files such
  604.        as php_zip.dll and php_ssh2.dll. Download PHP files here.
  605.      * When defining the executable, the 'check that file exists' box may
  606.        also be checked. For a small performance penalty, the IIS (or PWS)
  607.        will check that the script file exists and sort out authentication
  608.        before firing up PHP. This means that the web server will provide
  609.        sensible 404 style error messages instead of CGI errors complaining
  610.        that PHP did not output any data.
  611.      __________________________________________________________________
  612.  
  613. Windows NT/200x/XP and IIS 4 or newer
  614.  
  615.    PHP may be installed as a CGI binary, or with the ISAPI module. In
  616.    either case, you need to start the Microsoft Management Console (may
  617.    appear as 'Internet Services Manager', either in your Windows NT 4.0
  618.    Option Pack branch or the Control Panel=>Administrative Tools under
  619.    Windows 2000/XP). Then right click on your Web server node (this will
  620.    most probably appear as 'Default Web Server'), and select 'Properties'.
  621.  
  622.    If you want to use the CGI binary, do the following:
  623.  
  624.      * Under 'Home Directory', 'Virtual Directory', or 'Directory', do the
  625.        following:
  626.      * Change the Execute Permissions to 'Scripts only'
  627.      * Click on the 'Configuration' button, and choose the Application
  628.        Mappings tab. Click Add and set the Executable path to the
  629.        appropriate CGI file. An example PHP 5 value is: C:\php\php-cgi.exe
  630.        Supply .php as the extension. Leave 'Method exclusions' blank, and
  631.        check the 'Script engine' checkbox. Now, click OK a few times.
  632.      * Set up the appropriate security. (This is done in Internet Service
  633.        Manager), and if your NT Server uses NTFS file system, add execute
  634.        rights for I_USR_ to the directory that contains php.exe /
  635.        php-cgi.exe.
  636.  
  637.    To use the ISAPI module, do the following:
  638.  
  639.      * If you don't want to perform HTTP Authentication using PHP, you can
  640.        (and should) skip this step. Under ISAPI Filters, add a new ISAPI
  641.        filter. Use PHP as the filter name, and supply a path to the
  642.        php4isapi.dll / php5isapi.dll.
  643.      * Under 'Home Directory', 'Virtual Directory', or 'Directory', do the
  644.        following:
  645.      * Change the Execute Permissions to 'Scripts only'
  646.      * Click on the 'Configuration' button, and choose the Application
  647.        Mappings tab. Click Add and set the Executable path to the
  648.        appropriate ISAPI DLL. An example PHP 5 value is:
  649.        C:\php\php5isapi.dll Supply .php as the extension. Leave 'Method
  650.        exclusions' blank, and check the 'Script engine' checkbox. Now,
  651.        click OK a few times.
  652.      * Stop IIS completely (NET STOP iisadmin)
  653.      * Start IIS again (NET START w3svc)
  654.  
  655.    With IIS 6 (2003 Server), open up the IIS Manager, go to Web Service
  656.    Extensions, choose "Add a new Web service extension", enter in a name
  657.    such as PHP, choose the Add button and for the value browse to either
  658.    the ISAPI file (php4isapi.dll or php5isapi.dll) or CGI (php.exe or
  659.    php-cgi.exe) then check "Set extension status to Allowed" and click OK.
  660.  
  661.    In order to use index.php as a default content page, do the following:
  662.    From within the Documents tab, choose Add. Type in index.php and click
  663.    OK. Adjust the order by choosing Move Up or Move Down. This is similar
  664.    to setting DirectoryIndex with Apache.
  665.  
  666.    The steps above must be repeated for each extension that is to be
  667.    associated with PHP scripts. .php is the most common although .php3 may
  668.    be required for legacy applications.
  669.  
  670.    If you experience 100% CPU usage after some time, turn off the IIS
  671.    setting Cache ISAPI Application.
  672.      __________________________________________________________________
  673.  
  674. Windows and PWS 4
  675.  
  676.    PWS 4 does not support ISAPI, only PHP CGI should be used.
  677.  
  678.      * Edit the enclosed pws-php4cgi.reg / pws-php5cgi.reg file (look into
  679.        the SAPI folder for PHP 4, or in the main folder for PHP 5) to
  680.        reflect the location of your php.exe / php-cgi.exe. Backslashes
  681.        should be escaped, for example:
  682.        [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\paramet
  683.        ers\Script Map] ".php"="C:\\php\\php.exe" (change to
  684.        C:\\php\\php-cgi.exe if you are using PHP 5) Now merge this
  685.        registery file into your system; you may do this by double-clicking
  686.        it.
  687.      * In the PWS Manager, right click on a given directory you want to
  688.        add PHP support to, and select Properties. Check the 'Execute'
  689.        checkbox, and confirm.
  690.      __________________________________________________________________
  691.  
  692. Windows and PWS/IIS 3
  693.  
  694.    The recommended method for configuring these servers is to use the REG
  695.    file included with the distribution (pws-php4cgi.reg in the SAPI folder
  696.    for PHP 4, or pws-php5cgi.reg in the main folder for PHP 5). You may
  697.    want to edit this file and make sure the extensions and PHP install
  698.    directories match your configuration. Or you can follow the steps below
  699.    to do it manually.
  700.  
  701.    Warning
  702.  
  703.    These steps involve working directly with the Windows registry. One
  704.    error here can leave your system in an unstable state. We highly
  705.    recommend that you back up your registry first. The PHP Development
  706.    team will not be held responsible if you damage your registry.
  707.  
  708.      * Run Regedit.
  709.      * Navigate to: HKEY_LOCAL_MACHINE /System /CurrentControlSet
  710.        /Services /W3Svc /Parameters /ScriptMap.
  711.      * On the edit menu select: New->String Value.
  712.      * Type in the extension you wish to use for your php scripts. For
  713.        example .php
  714.      * Double click on the new string value and enter the path to php.exe
  715.        in the value data field. ex: C:\php\php.exe "%s" %s for PHP 4, or
  716.        C:\php\php-cgi.exe "%s" %s for PHP 5.
  717.      * Repeat these steps for each extension you wish to associate with
  718.        PHP scripts.
  719.  
  720.    The following steps do not affect the web server installation and only
  721.    apply if you want your PHP scripts to be executed when they are run
  722.    from the command line (ex. run C:\myscripts\test.php) or by double
  723.    clicking on them in a directory viewer window. You may wish to skip
  724.    these steps as you might prefer the PHP files to load into a text
  725.    editor when you double click on them.
  726.  
  727.      * Navigate to: HKEY_CLASSES_ROOT
  728.      * On the edit menu select: New->Key.
  729.      * Name the key to the extension you setup in the previous section.
  730.        ex: .php
  731.      * Highlight the new key and in the right side pane, double click the
  732.        "default value" and enter phpfile.
  733.      * Repeat the last step for each extension you set up in the previous
  734.        section.
  735.      * Now create another New->Key under HKEY_CLASSES_ROOT and name it
  736.        phpfile.
  737.      * Highlight the new key phpfile and in the right side pane, double
  738.        click the "default value" and enter PHP Script.
  739.      * Right click on the phpfile key and select New->Key, name it Shell.
  740.      * Right click on the Shell key and select New->Key, name it open.
  741.      * Right click on the open key and select New->Key, name it command.
  742.      * Highlight the new key command and in the right side pane, double
  743.        click the "default value" and enter the path to php.exe. ex:
  744.        c:\php\php.exe -q %1. (don't forget the %1).
  745.      * Exit Regedit.
  746.      * If using PWS on Windows, reboot to reload the registry.
  747.  
  748.    PWS and IIS 3 users now have a fully operational system. IIS 3 users
  749.    can use a nifty tool from Steven Genusa to configure their script maps.
  750.      __________________________________________________________________
  751.  
  752. Apache 1.3.x on Microsoft Windows
  753.  
  754.    This section contains notes and hints specific to Apache 1.3.x installs
  755.    of PHP on Microsoft Windows systems. There are also instructions and
  756.    notes for Apache 2 on a separate page.
  757.  
  758.      Note: Please read the manual installation steps first!
  759.  
  760.    There are two ways to set up PHP to work with Apache 1.3.x on Windows.
  761.    One is to use the CGI binary (php.exe for PHP 4 and php-cgi.exe for PHP
  762.    5), the other is to use the Apache Module DLL. In either case you need
  763.    to edit your httpd.conf to configure Apache to work with PHP, and then
  764.    restart the server.
  765.  
  766.    It is worth noting here that now the SAPI module has been made more
  767.    stable under Windows, we recommend it's use above the CGI binary, since
  768.    it is more transparent and secure.
  769.  
  770.    Although there can be a few variations of configuring PHP under Apache,
  771.    these are simple enough to be used by the newcomer. Please consult the
  772.    Apache Documentation for further configuration directives.
  773.  
  774.    After changing the configuration file, remember to restart the server,
  775.    for example, NET STOP APACHE followed by NET START APACHE, if you run
  776.    Apache as a Windows Service, or use your regular shortcuts.
  777.  
  778.      Note: Remember that when adding path values in the Apache
  779.      configuration files on Windows, all backslashes such as
  780.      c:\directory\file.ext must be converted to forward slashes, as
  781.      c:/directory/file.ext. A trailing slash may also be necessary for
  782.      directories.
  783.      __________________________________________________________________
  784.  
  785. Installing as an Apache module
  786.  
  787.    You should add the following lines to your Apache httpd.conf file:
  788.  
  789.    Example 2-3. PHP as an Apache 1.3.x module
  790.  
  791.    This assumes PHP is installed to c:\php. Adjust the path if this is not
  792.    the case.
  793.  
  794.    For PHP 4:
  795. # Add to the end of the LoadModule section
  796. # Don't forget to copy this file from the sapi directory!
  797. LoadModule php4_module "C:/php/php4apache.dll"
  798.  
  799. # Add to the end of the AddModule section
  800. AddModule mod_php4.c
  801.  
  802.    For PHP 5:
  803. # Add to the end of the LoadModule section
  804. LoadModule php5_module "C:/php/php5apache.dll"
  805.  
  806. # Add to the end of the AddModule section
  807. AddModule mod_php5.c
  808.  
  809.    For both:
  810. # Add this line inside the <IfModule mod_mime.c> conditional brace
  811. AddType application/x-httpd-php .php
  812.  
  813. # For syntax highlighted .phps files, also add
  814. AddType application/x-httpd-php-source .phps
  815.      __________________________________________________________________
  816.  
  817. Installing as a CGI binary
  818.  
  819.    If you unzipped the PHP package to C:\php\ as described in the Manual
  820.    Installation Steps section, you need to insert these lines to your
  821.    Apache configuration file to set up the CGI binary:
  822.  
  823.    Example 2-4. PHP and Apache 1.3.x as CGI
  824. ScriptAlias /php/ "c:/php/"
  825. AddType application/x-httpd-php .php
  826.  
  827. # For PHP 4
  828. Action application/x-httpd-php "/php/php.exe"
  829.  
  830. # For PHP 5
  831. Action application/x-httpd-php "/php/php-cgi.exe"
  832.  
  833. # specify the directory where php.ini is
  834. SetEnv PHPRC C:/php
  835.  
  836.    Note that the second line in the list above can be found in the actual
  837.    versions of httpd.conf, but it is commented out. Remember also to
  838.    substitute the c:/php/ for your actual path to PHP.
  839.  
  840.    Warning
  841.  
  842.    By using the CGI setup, your server is open to several possible
  843.    attacks. Please read our CGI security section to learn how to defend
  844.    yourself from those attacks.
  845.  
  846.    If you would like to present PHP source files syntax highlighted, there
  847.    is no such convenient option as with the module version of PHP. If you
  848.    chose to configure Apache to use PHP as a CGI binary, you will need to
  849.    use the highlight_file() function. To do this simply create a PHP
  850.    script file and add this code: <?php
  851.    highlight_file('some_php_script.php'); ?>.
  852.      __________________________________________________________________
  853.  
  854. Apache 2.0.x on Microsoft Windows
  855.  
  856.    This section contains notes and hints specific to Apache 2.0.x installs
  857.    of PHP on Microsoft Windows systems. We also have instructions and
  858.    notes for Apache 1.3.x users on a separate page.
  859.  
  860.      Note: You should read the manual installation steps first!
  861.  
  862.      Apache 2.2.x Support: Users of Apache 2.2.x may use the
  863.      documentation below except the appropriate DLL file is named
  864.      php5apache2_2.dll and it only exists as of PHP 5.2.0. See also
  865.      http://snaps.php.net/
  866.  
  867.    Warning
  868.  
  869.    We do not recommend using a threaded MPM in production with Apache2.
  870.    Use the prefork MPM instead, or use Apache1. For information on why,
  871.    read the related FAQ entry on using Apache2 with a threaded MPM
  872.  
  873.    You are highly encouraged to take a look at the Apache Documentation to
  874.    get a basic understanding of the Apache 2.0.x Server. Also consider to
  875.    read the Windows specific notes for Apache 2.0.x before reading on
  876.    here.
  877.  
  878.      PHP and Apache 2.0.x compatibility notes: The following versions of
  879.      PHP are known to work with the most recent version of Apache 2.0.x:
  880.  
  881.      * PHP 4.3.0 or later available at http://www.php.net/downloads.php.
  882.      * the latest stable development version. Get the source code
  883.        http://snaps.php.net/php5-latest.tar.gz or download binaries for
  884.        Windows http://snaps.php.net/win32/php5-win32-latest.zip.
  885.      * a prerelease version downloadable from http://qa.php.net/.
  886.      * you have always the option to obtain PHP through anonymous CVS.
  887.  
  888.      These versions of PHP are compatible to Apache 2.0.40 and later.
  889.  
  890.      Apache 2.0 SAPI-support started with PHP 4.2.0. PHP 4.2.3 works with
  891.      Apache 2.0.39, don't use any other version of Apache with PHP 4.2.3.
  892.      However, the recommended setup is to use PHP 4.3.0 or later with the
  893.      most recent version of Apache2.
  894.  
  895.      All mentioned versions of PHP will work still with Apache 1.3.x.
  896.  
  897.    Warning
  898.  
  899.    Apache 2.0.x is designed to run on Windows NT 4.0, Windows 2000 or
  900.    Windows XP. At this time, support for Windows 9x is incomplete. Apache
  901.    2.0.x is not expected to work on those platforms at this time.
  902.  
  903.    Download the most recent version of Apache 2.0.x and a fitting PHP
  904.    version. Follow the Manual Installation Steps and come back to go on
  905.    with the integration of PHP and Apache.
  906.  
  907.    There are two ways to set up PHP to work with Apache 2.0.x on Windows.
  908.    One is to use the CGI binary the other is to use the Apache module DLL.
  909.    In either case you need to edit your httpd.conf to configure Apache to
  910.    work with PHP and then restart the server.
  911.  
  912.      Note: Remember that when adding path values in the Apache
  913.      configuration files on Windows, all backslashes such as
  914.      c:\directory\file.ext must be converted to forward slashes, as
  915.      c:/directory/file.ext. A trailing slash may also be necessary for
  916.      directories.
  917.      __________________________________________________________________
  918.  
  919. Installing as a CGI binary
  920.  
  921.    You need to insert these three lines to your Apache httpd.conf
  922.    configuration file to set up the CGI binary:
  923.  
  924.    Example 2-5. PHP and Apache 2.0 as CGI
  925. ScriptAlias /php/ "c:/php/"
  926. AddType application/x-httpd-php .php
  927.  
  928. # For PHP 4
  929. Action application/x-httpd-php "/php/php.exe"
  930.  
  931. # For PHP 5
  932. Action application/x-httpd-php "/php/php-cgi.exe"
  933.  
  934.    Warning
  935.  
  936.    By using the CGI setup, your server is open to several possible
  937.    attacks. Please read our CGI security section to learn how to defend
  938.    yourself from those attacks.
  939.      __________________________________________________________________
  940.  
  941. Installing as an Apache module
  942.  
  943.    You need to insert these two lines to your Apache httpd.conf
  944.    configuration file to set up the PHP module for Apache 2.0:
  945.  
  946.    Example 2-6. PHP and Apache 2.0 as Module
  947. # For PHP 4 do something like this:
  948. LoadModule php4_module "c:/php/php4apache2.dll"
  949. # Don't forget to copy the php4apache2.dll file from the sapi directory!
  950. AddType application/x-httpd-php .php
  951.  
  952. # For PHP 5 do something like this:
  953. LoadModule php5_module "c:/php/php5apache2.dll"
  954. AddType application/x-httpd-php .php
  955.  
  956. # configure the path to php.ini
  957. PHPIniDir "C:/php"
  958.  
  959.      Note: Remember to substitute your actual path to PHP for the c:/php/
  960.      in the above examples. Take care to use either php4apache2.dll or
  961.      php5apache2.dll in your LoadModule directive and not php4apache.dll
  962.      or php5apache.dll as the latter ones are designed to run with Apache
  963.      1.3.x.
  964.  
  965.      Note: If you want to use content negotiation, read related FAQ.
  966.  
  967.    Warning
  968.  
  969.    Don't mix up your installation with DLL files from different PHP
  970.    versions. You have the only choice to use the DLL's and extensions that
  971.    ship with your downloaded PHP version.
  972.      __________________________________________________________________
  973.  
  974. Sun, iPlanet and Netscape servers on Microsoft Windows
  975.  
  976.    This section contains notes and hints specific to Sun Java System Web
  977.    Server, Sun ONE Web Server, iPlanet and Netscape server installs of PHP
  978.    on Windows.
  979.  
  980.    From PHP 4.3.3 on you can use PHP scripts with the NSAPI module to
  981.    generate custom directory listings and error pages. Additional
  982.    functions for Apache compatibility are also available. For support in
  983.    current web servers read the note about subrequests.
  984.      __________________________________________________________________
  985.  
  986. CGI setup on Sun, iPlanet and Netscape servers
  987.  
  988.    To install PHP as a CGI handler, do the following:
  989.  
  990.      * Copy php4ts.dll to your systemroot (the directory where you
  991.        installed Windows)
  992.      * Make a file association from the command line. Type the following
  993.        two lines:
  994.  
  995. assoc .php=PHPScript
  996. ftype PHPScript=c:\php\php.exe %1 %*
  997.  
  998.      * In the Netscape Enterprise Administration Server create a dummy
  999.        shellcgi directory and remove it just after (this step creates 5
  1000.        important lines in obj.conf and allow the web server to handle
  1001.        shellcgi scripts).
  1002.      * In the Netscape Enterprise Administration Server create a new mime
  1003.        type (Category: type, Content-Type: magnus-internal/shellcgi, File
  1004.        Suffix:php).
  1005.      * Do it for each web server instance you want PHP to run
  1006.  
  1007.    More details about setting up PHP as a CGI executable can be found
  1008.    here: http://benoit.noss.free.fr/php/install-php.html
  1009.      __________________________________________________________________
  1010.  
  1011. NSAPI setup on Sun, iPlanet and Netscape servers
  1012.  
  1013.    To install PHP with NSAPI, do the following:
  1014.  
  1015.      * Copy php4ts.dll to your systemroot (the directory where you
  1016.        installed Windows)
  1017.      * Make a file association from the command line. Type the following
  1018.        two lines:
  1019.  
  1020. assoc .php=PHPScript
  1021. ftype PHPScript=c:\php\php.exe %1 %*
  1022.  
  1023.      * In the Netscape Enterprise Administration Server create a new mime
  1024.        type (Category: type, Content-Type: magnus-internal/x-httpd-php,
  1025.        File Suffix: php).
  1026.      * Edit magnus.conf (for servers >= 6) or obj.conf (for servers < 6)
  1027.        and add the following: You should place the lines after mime types
  1028.        init.
  1029.  
  1030. Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="c:/
  1031. php/sapi/php4nsapi.dll"
  1032. Init fn="php4_init" LateInit="yes" errorString="Failed to initialise PHP!" [php_
  1033. ini="c:/path/to/php.ini"]
  1034.  
  1035.        (PHP >= 4.3.3) The php_ini parameter is optional but with it you
  1036.        can place your php.ini in your web server configuration directory.
  1037.      * Configure the default object in obj.conf (for virtual server
  1038.        classes [Sun Web Server 6.0+] in their vserver.obj.conf): In the
  1039.        <Object name="default"> section, place this line necessarily after
  1040.        all 'ObjectType' and before all 'AddLog' lines:
  1041.  
  1042. Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inike
  1043. y=value ...]
  1044.  
  1045.        (PHP >= 4.3.3) As additional parameters you can add some special
  1046.        php.ini-values, for example you can set a
  1047.        docroot="/path/to/docroot" specific to the context php4_execute is
  1048.        called. For boolean ini-keys please use 0/1 as value, not
  1049.        "On","Off",... (this will not work correctly), e.g.
  1050.        zlib.output_compression=1 instead of zlib.output_compression="On"
  1051.      * This is only needed if you want to configure a directory that only
  1052.        consists of PHP scripts (same like a cgi-bin directory):
  1053.  
  1054. <Object name="x-httpd-php">
  1055. ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
  1056. Service fn=php4_execute [inikey=value inikey=value ...]
  1057. </Object>
  1058.  
  1059.        After that you can configure a directory in the Administration
  1060.        server and assign it the style x-httpd-php. All files in it will
  1061.        get executed as PHP. This is nice to hide PHP usage by renaming
  1062.        files to .html.
  1063.      * Restart your web service and apply changes
  1064.      * Do it for each web server instance you want PHP to run
  1065.  
  1066.      Note: More details about setting up PHP as an NSAPI filter can be
  1067.      found here: http://benoit.noss.free.fr/php/install-php4.html
  1068.  
  1069.      Note: The stacksize that PHP uses depends on the configuration of
  1070.      the web server. If you get crashes with very large PHP scripts, it
  1071.      is recommended to raise it with the Admin Server (in the section
  1072.      "MAGNUS EDITOR").
  1073.      __________________________________________________________________
  1074.  
  1075. CGI environment and recommended modifications in php.ini
  1076.  
  1077.    Important when writing PHP scripts is the fact that Sun JSWS/Sun ONE
  1078.    WS/iPlanet/Netscape is a multithreaded web server. Because of that all
  1079.    requests are running in the same process space (the space of the web
  1080.    server itself) and this space has only one environment. If you want to
  1081.    get CGI variables like PATH_INFO, HTTP_HOST etc. it is not the correct
  1082.    way to try this in the old PHP 3.x way with getenv() or a similar way
  1083.    (register globals to environment, $_ENV). You would only get the
  1084.    environment of the running web server without any valid CGI variables!
  1085.  
  1086.      Note: Why are there (invalid) CGI variables in the environment?
  1087.  
  1088.      Answer: This is because you started the web server process from the
  1089.      admin server which runs the startup script of the web server, you
  1090.      wanted to start, as a CGI script (a CGI script inside of the admin
  1091.      server!). This is why the environment of the started web server has
  1092.      some CGI environment variables in it. You can test this by starting
  1093.      the web server not from the administration server. Use the command
  1094.      line as root user and start it manually - you will see there are no
  1095.      CGI-like environment variables.
  1096.  
  1097.    Simply change your scripts to get CGI variables in the correct way for
  1098.    PHP 4.x by using the superglobal $_SERVER. If you have older scripts
  1099.    which use $HTTP_HOST, etc., you should turn on register_globals in
  1100.    php.ini and change the variable order too (important: remove "E" from
  1101.    it, because you do not need the environment here):
  1102. variables_order = "GPCS"
  1103. register_globals = On
  1104.      __________________________________________________________________
  1105.  
  1106. Special use for error pages or self-made directory listings (PHP >= 4.3.3)
  1107.  
  1108.    You can use PHP to generate the error pages for "404 Not Found" or
  1109.    similar. Add the following line to the object in obj.conf for every
  1110.    error page you want to overwrite:
  1111. Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inik
  1112. ey=value...]
  1113.  
  1114.    where XXX is the HTTP error code. Please delete any other Error
  1115.    directives which could interfere with yours. If you want to place a
  1116.    page for all errors that could exist, leave the code parameter out.
  1117.    Your script can get the HTTP status code with $_SERVER['ERROR_TYPE'].
  1118.  
  1119.    Another possibility is to generate self-made directory listings. Just
  1120.    create a PHP script which displays a directory listing and replace the
  1121.    corresponding default Service line for type="magnus-internal/directory"
  1122.    in obj.conf with the following:
  1123. Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/scri
  1124. pt.php" [inikey=value inikey=value...]
  1125.  
  1126.    For both error and directory listing pages the original URI and
  1127.    translated URI are in the variables $_SERVER['PATH_INFO'] and
  1128.    $_SERVER['PATH_TRANSLATED'].
  1129.      __________________________________________________________________
  1130.  
  1131. Note about nsapi_virtual() and subrequests (PHP >= 4.3.3)
  1132.  
  1133.    The NSAPI module now supports the nsapi_virtual() function (alias:
  1134.    virtual()) to make subrequests on the web server and insert the result
  1135.    in the web page. The problem is, that this function uses some
  1136.    undocumented features from the NSAPI library.
  1137.  
  1138.    Under Unix this is not a problem, because the module automatically
  1139.    looks for the needed functions and uses them if available. If not,
  1140.    nsapi_virtual() is disabled.
  1141.  
  1142.    Under Windows limitations in the DLL handling need the use of a
  1143.    automatic detection of the most recent ns-httpdXX.dll file. This is
  1144.    tested for servers till version 6.1. If a newer version of the Sun
  1145.    server is used, the detection fails and nsapi_virtual() is disabled.
  1146.  
  1147.    If this is the case, try the following: Add the following parameter to
  1148.    php4_init in magnus.conf/obj.conf:
  1149.    Init fn=php4_init ... server_lib="ns-httpdXX.dll"
  1150.  
  1151.    where XX is the correct DLL version number. To get it, look in the
  1152.    server-root for the correct DLL name. The DLL with the biggest filesize
  1153.    is the right one.
  1154.  
  1155.    You can check the status by using the phpinfo() function.
  1156.  
  1157.      Note: But be warned: Support for nsapi_virtual() is EXPERIMENTAL!!!
  1158.      __________________________________________________________________
  1159.  
  1160. OmniHTTPd Server
  1161.  
  1162.    This section contains notes and hints specific to OmniHTTPd on Windows.
  1163.  
  1164.      Note: You should read the manual installation steps first!
  1165.  
  1166.    Warning
  1167.  
  1168.    By using the CGI setup, your server is open to several possible
  1169.    attacks. Please read our CGI security section to learn how to defend
  1170.    yourself from those attacks.
  1171.  
  1172.    You need to complete the following steps to make PHP work with
  1173.    OmniHTTPd. This is a CGI executable setup. SAPI is supported by
  1174.    OmniHTTPd, but some tests have shown that it is not so stable to use
  1175.    PHP as an ISAPI module.
  1176.  
  1177.      Important for CGI users: Read the faq on cgi.force_redirect for
  1178.      important details. This directive needs to be set to 0.
  1179.  
  1180.     1. Install OmniHTTPd server.
  1181.     2. Right click on the blue OmniHTTPd icon in the system tray and
  1182.        select Properties
  1183.     3. Click on Web Server Global Settings
  1184.     4. On the 'External' tab, enter: virtual = .php | actual =
  1185.        c:\php\php.exe (use php-cgi.exe if installing PHP 5), and use the
  1186.        Add button.
  1187.     5. On the Mime tab, enter: virtual = wwwserver/stdcgi | actual = .php,
  1188.        and use the Add button.
  1189.     6. Click OK
  1190.  
  1191.    Repeat steps 2 - 6 for each extension you want to associate with PHP.
  1192.  
  1193.      Note: Some OmniHTTPd packages come with built in PHP support. You
  1194.      can choose at setup time to do a custom setup, and uncheck the PHP
  1195.      component. We recommend you to use the latest PHP binaries. Some
  1196.      OmniHTTPd servers come with PHP 4 beta distributions, so you should
  1197.      choose not to set up the built in support, but install your own. If
  1198.      the server is already on your machine, use the Replace button in
  1199.      Step 4 and 5 to set the new, correct information.
  1200.      __________________________________________________________________
  1201.  
  1202. Sambar Server on Microsoft Windows
  1203.  
  1204.    This section contains notes and hints specific to the Sambar Server for
  1205.    Windows.
  1206.  
  1207.      Note: You should read the manual installation steps first!
  1208.  
  1209.    This list describes how to set up the ISAPI module to work with the
  1210.    Sambar server on Windows.
  1211.  
  1212.      * Find the file called mappings.ini (in the config directory) in the
  1213.        Sambar install directory.
  1214.      * Open mappings.ini and add the following line under [ISAPI]:
  1215.  
  1216.    Example 2-7. ISAPI configuration of Sambar
  1217. #for PHP 4
  1218. *.php = c:\php\php4isapi.dll
  1219.  
  1220. #for PHP 5
  1221. *.php = c:\php\php5isapi.dll
  1222.  
  1223.        (This line assumes that PHP was installed in c:\php.)
  1224.      * Now restart the Sambar server for the changes to take effect.
  1225.  
  1226.      Note: If you intend to use PHP to communicate with resources which
  1227.      are held on a different computer on your network, then you will need
  1228.      to alter the account used by the Sambar Server Service. The default
  1229.      account used for the Sambar Server Service is LocalSystem which will
  1230.      not have access to remote resources. The account can be amended by
  1231.      using the Services option from within the Windows Control Panel
  1232.      Administation Tools.
  1233.      __________________________________________________________________
  1234.  
  1235. Xitami on Microsoft Windows
  1236.  
  1237.    This section contains notes and hints specific to Xitami on Windows.
  1238.  
  1239.      Note: You should read the manual installation steps first!
  1240.  
  1241.    This list describes how to set up the PHP CGI binary to work with
  1242.    Xitami on Windows.
  1243.  
  1244.      Important for CGI users: Read the faq on cgi.force_redirect for
  1245.      important details. This directive needs to be set to 0. If you want
  1246.      to use $_SERVER['PHP_SELF'] you have to enable the cgi.fix_pathinfo
  1247.      directive.
  1248.  
  1249.    Warning
  1250.  
  1251.    By using the CGI setup, your server is open to several possible
  1252.    attacks. Please read our CGI security section to learn how to defend
  1253.    yourself from those attacks.
  1254.  
  1255.      * Make sure the web server is running, and point your browser to
  1256.        xitamis admin console (usually http://127.0.0.1/admin), and click
  1257.        on Configuration.
  1258.      * Navigate to the Filters, and put the extension which PHP should
  1259.        parse (i.e. .php) into the field File extensions (.xxx).
  1260.      * In Filter command or script put the path and name of your PHP CGI
  1261.        executable i.e. C:\php\php.exe for PHP 4, or C:\php\php-cgi.exe for
  1262.        PHP 5.
  1263.      * Press the 'Save' icon.
  1264.      * Restart the server to reflect changes.
  1265.      __________________________________________________________________
  1266.  
  1267. Installation of extensions on Windows
  1268.  
  1269.    After installing PHP and a web server on Windows, you will probably
  1270.    want to install some extensions for added functionality. You can choose
  1271.    which extensions you would like to load when PHP starts by modifying
  1272.    your php.ini. You can also load a module dynamically in your script
  1273.    using dl().
  1274.  
  1275.    The DLLs for PHP extensions are prefixed with php_.
  1276.  
  1277.    Many extensions are built into the Windows version of PHP. This means
  1278.    additional DLL files, and the extension directive, are not used to load
  1279.    these extensions. The Windows PHP Extensions table lists extensions
  1280.    that require, or used to require, additional PHP DLL files. Here's a
  1281.    list of built in extensions:
  1282.  
  1283.    In PHP 4 (updated PHP 4.3.11): BCMath, Caledar, COM, Ctype, FTP, MySQL,
  1284.    ODBC, Overload, PCRE, Session, Tokenizer, WDDX, XML and Zlib
  1285.  
  1286.    In PHP 5 (updated PHP 5.0.4), the following changes exist. Built in:
  1287.    DOM, LibXML, Iconv, SimpleXML, SPL and SQLite. And the following are no
  1288.    longer built in: MySQL and Overload.
  1289.  
  1290.    The default location PHP searches for extensions is C:\php4\extensions
  1291.    in PHP 4 and C:\php5 in PHP 5. To change this setting to reflect your
  1292.    setup of PHP edit your php.ini file:
  1293.  
  1294.      * You will need to change the extension_dir setting to point to the
  1295.        directory where your extensions lives, or where you have placed
  1296.        your php_*.dll files. For example:
  1297.  
  1298. extension_dir = C:\php\extensions
  1299.  
  1300.      * Enable the extension(s) in php.ini you want to use by uncommenting
  1301.        the extension=php_*.dll lines in php.ini. This is done by deleting
  1302.        the leading ; from the extension you want to load.
  1303.  
  1304.    Example 2-8. Enable Bzip2 extension for PHP-Windows
  1305. // change the following line from ...
  1306. ;extension=php_bz2.dll
  1307.  
  1308. // ... to
  1309. extension=php_bz2.dll
  1310.  
  1311.      * Some of the extensions need extra DLLs to work. Couple of them can
  1312.        be found in the distribution package, in the C:\php\dlls\ folder in
  1313.        PHP 4 or in the main folder in PHP 5, but some, for example Oracle
  1314.        (php_oci8.dll) require DLLs which are not bundled with the
  1315.        distribution package. If you are installing PHP 4, copy the bundled
  1316.        DLLs from C:\php\dlls folder to the main C:\php folder. Don't
  1317.        forget to include C:\php in the system PATH (this process is
  1318.        explained in a separate FAQ entry).
  1319.      * Some of these DLLs are not bundled with the PHP distribution. See
  1320.        each extensions documentation page for details. Also, read the
  1321.        manual section titled Installation of PECL extensions for details
  1322.        on PECL. An increasingly large number of PHP extensions are found
  1323.        in PECL, and these extensions require a separate download.
  1324.  
  1325.      Note: If you are running a server module version of PHP remember to
  1326.      restart your web server to reflect your changes to php.ini.
  1327.  
  1328.    The following table describes some of the extensions available and
  1329.    required additional dlls.
  1330.  
  1331.    Table 2-1. PHP Extensions
  1332.    Extension Description Notes
  1333.    php_bz2.dll bzip2 compression functions None
  1334.    php_calendar.dll Calendar conversion functions Built in since PHP 4.0.3
  1335.    php_cpdf.dll ClibPDF functions None
  1336.    php_crack.dll Crack functions None
  1337.    php_ctype.dll ctype family functions Built in since PHP 4.3.0
  1338.    php_curl.dll CURL, Client URL library functions Requires: libeay32.dll,
  1339.    ssleay32.dll (bundled)
  1340.    php_cybercash.dll Cybercash payment functions PHP <= 4.2.0
  1341.    php_db.dll DBM functions Deprecated. Use DBA instead (php_dba.dll)
  1342.    php_dba.dll DBA: DataBase (dbm-style) Abstraction layer functions None
  1343.    php_dbase.dll dBase functions None
  1344.    php_dbx.dll dbx functions
  1345.    php_domxml.dll DOM XML functions PHP <= 4.2.0 requires: libxml2.dll
  1346.    (bundled) PHP >= 4.3.0 requires: iconv.dll (bundled)
  1347.    php_dotnet.dll .NET functions PHP <= 4.1.1
  1348.    php_exif.dll EXIF functions php_mbstring.dll. And, php_exif.dll must be
  1349.    loaded after php_mbstring.dll in php.ini.
  1350.    php_fbsql.dll FrontBase functions PHP <= 4.2.0
  1351.    php_fdf.dll FDF: Forms Data Format functions. Requires: fdftk.dll
  1352.    (bundled)
  1353.    php_filepro.dll filePro functions Read-only access
  1354.    php_ftp.dll FTP functions Built-in since PHP 4.0.3
  1355.    php_gd.dll GD library image functions Removed in PHP 4.3.2. Also note
  1356.    that truecolor functions are not available in GD1, instead, use
  1357.    php_gd2.dll.
  1358.    php_gd2.dll GD library image functions GD2
  1359.    php_gettext.dll Gettext functions PHP <= 4.2.0 requires gnu_gettext.dll
  1360.    (bundled), PHP >= 4.2.3 requires libintl-1.dll, iconv.dll (bundled).
  1361.    php_hyperwave.dll HyperWave functions None
  1362.    php_iconv.dll ICONV characterset conversion Requires: iconv-1.3.dll
  1363.    (bundled), PHP >=4.2.1 iconv.dll
  1364.    php_ifx.dll Informix functions Requires: Informix libraries
  1365.    php_iisfunc.dll IIS management functions None
  1366.    php_imap.dll IMAP POP3 and NNTP functions None
  1367.    php_ingres.dll Ingres II functions Requires: Ingres II libraries
  1368.    php_interbase.dll InterBase functions Requires: gds32.dll (bundled)
  1369.    php_java.dll Java functions PHP <= 4.0.6 requires: jvm.dll (bundled)
  1370.    php_ldap.dll LDAP functions PHP <= 4.2.0 requires libsasl.dll
  1371.    (bundled), PHP >= 4.3.0 requires libeay32.dll, ssleay32.dll (bundled)
  1372.    php_mbstring.dll Multi-Byte String functions None
  1373.    php_mcrypt.dll Mcrypt Encryption functions Requires: libmcrypt.dll
  1374.    php_mhash.dll Mhash functions PHP >= 4.3.0 requires: libmhash.dll
  1375.    (bundled)
  1376.    php_mime_magic.dll Mimetype functions Requires: magic.mime (bundled)
  1377.    php_ming.dll Ming functions for Flash None
  1378.    php_msql.dll mSQL functions Requires: msql.dll (bundled)
  1379.    php_mssql.dll MSSQL functions Requires: ntwdblib.dll (bundled)
  1380.    php_mysql.dll MySQL functions PHP >= 5.0.0, requires libmysql.dll
  1381.    (bundled)
  1382.    php_mysqli.dll MySQLi functions PHP >= 5.0.0, requires libmysql.dll
  1383.    (libmysqli.dll in PHP <= 5.0.2) (bundled)
  1384.    php_oci8.dll Oracle 8 functions Requires: Oracle 8.1+ client libraries
  1385.    php_openssl.dll OpenSSL functions Requires: libeay32.dll (bundled)
  1386.    php_oracle.dll Oracle functions Requires: Oracle 7 client libraries
  1387.    php_overload.dll Object overloading functions Built in since PHP 4.3.0
  1388.    php_pdf.dll PDF functions None
  1389.    php_pgsql.dll PostgreSQL functions None
  1390.    php_printer.dll Printer functions None
  1391.    php_shmop.dll Shared Memory functions None
  1392.    php_snmp.dll SNMP get and walk functions NT only!
  1393.    php_soap.dll SOAP functions PHP >= 5.0.0
  1394.    php_sockets.dll Socket functions None
  1395.    php_sybase_ct.dll Sybase functions Requires: Sybase client libraries
  1396.    php_tidy.dll Tidy functions PHP >= 5.0.0
  1397.    php_tokenizer.dll Tokenizer functions Built in since PHP 4.3.0
  1398.    php_w32api.dll W32api functions None
  1399.    php_xmlrpc.dll XML-RPC functions PHP >= 4.2.1 requires: iconv.dll
  1400.    (bundled)
  1401.    php_xslt.dll XSLT functions PHP <= 4.2.0 requires sablot.dll, expat.dll
  1402.    (bundled). PHP >= 4.2.1 requires sablot.dll, expat.dll, iconv.dll
  1403.    (bundled).
  1404.    php_yaz.dll YAZ functions Requires: yaz.dll (bundled)
  1405.    php_zip.dll Zip File functions Read only access
  1406.    php_zlib.dll ZLib compression functions Built in since PHP 4.3.0
  1407.      __________________________________________________________________
  1408.  
  1409. Chapter 3. Installation of PECL extensions
  1410.  
  1411. Introduction to PECL Installations
  1412.  
  1413.    PECL is a repository of PHP extensions that are made available to you
  1414.    via the PEAR packaging system. This section of the manual is intended
  1415.    to demonstrate how to obtain and install PECL extensions.
  1416.  
  1417.    These instructions assume /your/phpsrcdir/ is the path to the PHP
  1418.    source distribution, and that extname is the name of the PECL
  1419.    extension. Adjust accordingly. These instructions also assume a
  1420.    familiarity with the pear command. The information in the PEAR manual
  1421.    for the pear command also applies to the pecl command.
  1422.  
  1423.    To be useful, a shared extension must be built, installed, and loaded.
  1424.    The methods described below provide you with various instructions on
  1425.    how to build and install the extensions, but they do not automatically
  1426.    load them. Extensions can be loaded by adding an extension directive.
  1427.    To this php.ini file, or through the use of the dl() function.
  1428.  
  1429.    When building PHP modules, it's important to have known-good versions
  1430.    of the required tools (autoconf, automake, libtool, etc.) See the
  1431.    Anonymous CVS Instructions for details on the required tools, and
  1432.    required versions.
  1433.      __________________________________________________________________
  1434.  
  1435. Downloading PECL extensions
  1436.  
  1437.    There are several options for downloading PECL extensions, such as:
  1438.  
  1439.      * http://pecl.php.net
  1440.        The PECL web site contains information about the different
  1441.        extensions that are offered by the PHP Development Team. The
  1442.        information available here includes: ChangeLog, release notes,
  1443.        requirements and other similar details.
  1444.      * pecl download extname
  1445.        PECL extensions that have releases listed on the PECL web site are
  1446.        available for download and installation using the pecl command.
  1447.        Specific revisions may also be specified.
  1448.      * CVS
  1449.        Most PECL extensions also reside in CVS. A web-based view may be
  1450.        seen at http://cvs.php.net/pecl/. To download straight from CVS,
  1451.        the following sequence of commands may be used. Note that phpfi is
  1452.        the password for user cvsread:
  1453.  
  1454. $ cvs -d:pserver:cvsread@cvs.php.net:/repository login
  1455. $ cvs -d:pserver:cvsread@cvs.php.net:/repository co pecl/extname
  1456.  
  1457.      * Windows downloads
  1458.        Windows users may find compiled PECL binaries by downloading the
  1459.        Collection of PECL modules from the PHP Downloads page, or by
  1460.        retrieving a PECL Snapshot or an extension DLL on PECL4WIN. To
  1461.        compile PHP under Windows, read the appropriate chapter.
  1462.      __________________________________________________________________
  1463.  
  1464. PECL for Windows users
  1465.  
  1466.    As with any other PHP extension DLL, installation is as simple as
  1467.    copying the PECL extension DLLs into the extension_dir folder and
  1468.    loading them from php.ini. For example, add the following line to your
  1469.    php.ini:
  1470.  
  1471.    extension=php_extname.dll
  1472.  
  1473.    After doing this, restart the web server.
  1474.      __________________________________________________________________
  1475.  
  1476. Compiling shared PECL extensions with the pecl command
  1477.  
  1478.    PECL makes it easy to create shared PHP extensions. Using the pecl
  1479.    command, do the following:
  1480.  
  1481.    $ pecl install extname
  1482.  
  1483.    This will download the source for extname, compile, and install
  1484.    extname.so into your extension_dir. extname.so may then be loaded via
  1485.    php.ini
  1486.  
  1487.    By default, the pecl command will not install packages that are marked
  1488.    with the alpha or beta state. If no stable packages are available, you
  1489.    may install a beta package using the following command:
  1490.  
  1491.    $ pecl install extname-beta
  1492.  
  1493.    You may also install a specific version using this variant:
  1494.  
  1495.    $ pecl install extname-0.1
  1496.      __________________________________________________________________
  1497.  
  1498. Compiling shared PECL extensions with phpize
  1499.  
  1500.    Sometimes, using the pecl installer is not an option. This could be
  1501.    because you're behind a firewall, or it could be because the extension
  1502.    you want to install is not available as a PECL compatible package, such
  1503.    as unreleased extensions from CVS. If you need to build such an
  1504.    extension, you can use the lower-level build tools to perform the build
  1505.    manually.
  1506.  
  1507.    The phpize command is used to prepare the build environment for a PHP
  1508.    extension. In the following sample, the sources for an extension are in
  1509.    a directory named extname:
  1510.  
  1511. $ cd extname
  1512. $ phpize
  1513. $ ./configure
  1514. $ make
  1515. # make install
  1516.  
  1517.    A successful install will have created extname.so and put it into the
  1518.    PHP extensions directory. You'll need to and adjust php.ini and add an
  1519.    extension=extname.so line before you can use the extension.
  1520.  
  1521.    If the system is missing the phpize command, and precompiled packages
  1522.    (like RPM's) are used, be sure to also install the appropriate devel
  1523.    version of the PHP package as they often include the phpize command
  1524.    along with the appropriate header files to build PHP and its
  1525.    extensions.
  1526.  
  1527.    Execute phpize --help to display additional usage information.
  1528.      __________________________________________________________________
  1529.  
  1530. Compiling PECL extensions statically into PHP
  1531.  
  1532.    You might find that you need to build a PECL extension statically into
  1533.    your PHP binary. To do this, you'll need to place the extension source
  1534.    under the php-src/ext/ directory and tell the PHP build system to
  1535.    regenerate its configure script.
  1536.  
  1537. $ cd /your/phpsrcdir/ext
  1538. $ pecl download extname
  1539. $ gzip -d < extname.tgz | tar -xvf -
  1540. $ mv extname-x.x.x extname
  1541.  
  1542.    This will result in the following directory:
  1543.  
  1544.    /your/phpsrcdir/ext/extname
  1545.  
  1546.    From here, force PHP to rebuild the configure script, and then build
  1547.    PHP as normal:
  1548.  
  1549. $ cd /your/phpsrcdir
  1550. $ rm configure
  1551. $ ./buildconf --force
  1552. $ ./configure --help
  1553. $ ./configure --with-extname --enable-someotherext --with-foobar
  1554. $ make
  1555. $ make install
  1556.  
  1557.      Note: To run the 'buildconf' script you need autoconf 2.13 and
  1558.      automake 1.4+ (newer versions of autoconf may work, but are not
  1559.      supported).
  1560.  
  1561.    Whether --enable-extname or --with-extname is used depends on the
  1562.    extension. Typically an extension that does not require external
  1563.    libraries uses --enable. To be sure, run the following after buildconf:
  1564.  
  1565.    $ ./configure --help | grep extname
  1566.      __________________________________________________________________
  1567.  
  1568. Chapter 4. Problems?
  1569.  
  1570. Read the FAQ
  1571.  
  1572.    Some problems are more common than others. The most common ones are
  1573.    listed in the PHP FAQ, part of this manual.
  1574.      __________________________________________________________________
  1575.  
  1576. Other problems
  1577.  
  1578.    If you are still stuck, someone on the PHP installation mailing list
  1579.    may be able to help you. You should check out the archive first, in
  1580.    case someone already answered someone else who had the same problem as
  1581.    you. The archives are available from the support page on
  1582.    http://www.php.net/support.php. To subscribe to the PHP installation
  1583.    mailing list, send an empty mail to
  1584.    php-install-subscribe@lists.php.net. The mailing list address is
  1585.    php-install@lists.php.net.
  1586.  
  1587.    If you want to get help on the mailing list, please try to be precise
  1588.    and give the necessary details about your environment (which operating
  1589.    system, what PHP version, what web server, if you are running PHP as
  1590.    CGI or a server module, safe mode, etc...), and preferably enough code
  1591.    to make others able to reproduce and test your problem.
  1592.      __________________________________________________________________
  1593.  
  1594. Bug reports
  1595.  
  1596.    If you think you have found a bug in PHP, please report it. The PHP
  1597.    developers probably don't know about it, and unless you report it,
  1598.    chances are it won't be fixed. You can report bugs using the
  1599.    bug-tracking system at http://bugs.php.net/. Please do not send bug
  1600.    reports in mailing list or personal letters. The bug system is also
  1601.    suitable to submit feature requests.
  1602.  
  1603.    Read the How to report a bug document before submitting any bug
  1604.    reports!
  1605.      __________________________________________________________________
  1606.  
  1607. Chapter 5. Runtime Configuration
  1608.  
  1609. The configuration file
  1610.  
  1611.    The configuration file (called php3.ini in PHP 3, and simply php.ini as
  1612.    of PHP 4) is read when PHP starts up. For the server module versions of
  1613.    PHP, this happens only once when the web server is started. For the CGI
  1614.    and CLI version, it happens on every invocation.
  1615.  
  1616.    php.ini is searched in these locations (in order):
  1617.  
  1618.      * SAPI module specific location (PHPIniDir directive in Apache 2, -c
  1619.        command line option in CGI and CLI, php_ini parameter in NSAPI,
  1620.        PHP_INI_PATH environment variable in THTTPD)
  1621.      * The PHPRC environment variable. Before PHP 5.2.0 this was checked
  1622.        after the registry key mentioned below.
  1623.      * As of PHP 5.2.0, the following registry locations are searched in
  1624.        order: HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z\IniFilePath,
  1625.        HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y\IniFilePath and
  1626.        HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x\IniFilePath, where x, y and z
  1627.        mean the PHP major, minor and release versions.
  1628.      * HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath (Windows Registry
  1629.        location)
  1630.      * Current working directory (except CLI)
  1631.      * The web server's directory (for SAPI modules), or directory of PHP
  1632.        (otherwise in Windows)
  1633.      * Windows directory (C:\windows or C:\winnt) (for Windows), or
  1634.        --with-config-file-path compile time option
  1635.  
  1636.    If php-SAPI.ini exists (where SAPI is used SAPI, so the filename is
  1637.    e.g. php-cli.ini or php-apache.ini), it's used instead of php.ini. SAPI
  1638.    name can be determined by php_sapi_name().
  1639.  
  1640.      Note: The Apache web server changes the directory to root at startup
  1641.      causing PHP to attempt to read php.ini from the root filesystem if
  1642.      it exists.
  1643.  
  1644.    The php.ini directives handled by extensions are documented
  1645.    respectively on the pages of the extensions themselves. The list of the
  1646.    core directives is available in the appendix. Probably not all PHP
  1647.    directives are documented in the manual though. For a complete list of
  1648.    directives available in your PHP version, please read your well
  1649.    commented php.ini file. Alternatively, you may find the the latest
  1650.    php.ini from CVS helpful too.
  1651.  
  1652.    Example 5-1. php.ini example
  1653. ; any text on a line after an unquoted semicolon (;) is ignored
  1654. [php] ; section markers (text within square brackets) are also ignored
  1655. ; Boolean values can be set to either:
  1656. ;    true, on, yes
  1657. ; or false, off, no, none
  1658. register_globals = off
  1659. track_errors = yes
  1660.  
  1661. ; you can enclose strings in double-quotes
  1662. include_path = ".:/usr/local/lib/php"
  1663.  
  1664. ; backslashes are treated the same as any other character
  1665. include_path = ".;c:\php\lib"
  1666.  
  1667.    Since PHP 5.1.0, it is possible to refer to existing .ini variables
  1668.    from within .ini files. Example: open_basedir = ${open_basedir}
  1669.    ":/new/dir".
  1670.      __________________________________________________________________
  1671.  
  1672. How to change configuration settings
  1673.  
  1674. Running PHP as an Apache module
  1675.  
  1676.    When using PHP as an Apache module, you can also change the
  1677.    configuration settings using directives in Apache configuration files
  1678.    (e.g. httpd.conf) and .htaccess files. You will need "AllowOverride
  1679.    Options" or "AllowOverride All" privileges to do so.
  1680.  
  1681.    With PHP 4 and PHP 5, there are several Apache directives that allow
  1682.    you to change the PHP configuration from within the Apache
  1683.    configuration files. For a listing of which directives are PHP_INI_ALL,
  1684.    PHP_INI_PERDIR, or PHP_INI_SYSTEM, have a look at the List of php.ini
  1685.    directives appendix.
  1686.  
  1687.      Note: With PHP 3, there are Apache directives that correspond to
  1688.      each configuration setting in the php3.ini name, except the name is
  1689.      prefixed by "php3_".
  1690.  
  1691.    php_value name value
  1692.           Sets the value of the specified directive. Can be used only with
  1693.           PHP_INI_ALL and PHP_INI_PERDIR type directives. To clear a
  1694.           previously set value use none as the value.
  1695.  
  1696.      Note: Don't use php_value to set boolean values. php_flag (see
  1697.      below) should be used instead.
  1698.  
  1699.    php_flag name on|off
  1700.           Used to set a boolean configuration directive. Can be used only
  1701.           with PHP_INI_ALL and PHP_INI_PERDIR type directives.
  1702.  
  1703.    php_admin_value name value
  1704.           Sets the value of the specified directive. This can not be used
  1705.           in .htaccess files. Any directive type set with php_admin_value
  1706.           can not be overridden by .htaccess or virtualhost directives. To
  1707.           clear a previously set value use none as the value.
  1708.  
  1709.    php_admin_flag name on|off
  1710.           Used to set a boolean configuration directive. This can not be
  1711.           used in .htaccess files. Any directive type set with
  1712.           php_admin_flag can not be overridden by .htaccess or virtualhost
  1713.           directives.
  1714.  
  1715.    Example 5-2. Apache configuration example
  1716. <IfModule mod_php5.c>
  1717.   php_value include_path ".:/usr/local/lib/php"
  1718.   php_admin_flag safe_mode on
  1719. </IfModule>
  1720. <IfModule mod_php4.c>
  1721.   php_value include_path ".:/usr/local/lib/php"
  1722.   php_admin_flag safe_mode on
  1723. </IfModule>
  1724. <IfModule mod_php3.c>
  1725.   php3_include_path ".:/usr/local/lib/php"
  1726.   php3_safe_mode on
  1727. </IfModule>
  1728.  
  1729.    Caution
  1730.  
  1731.    PHP constants do not exist outside of PHP. For example, in httpd.conf
  1732.    you can not use PHP constants such as E_ALL or E_NOTICE to set the
  1733.    error_reporting directive as they will have no meaning and will
  1734.    evaluate to 0. Use the associated bitmask values instead. These
  1735.    constants can be used in php.ini
  1736.      __________________________________________________________________
  1737.  
  1738. Changing PHP configuration via the Windows registry
  1739.  
  1740.    When running PHP on Windows, the configuration values can be modified
  1741.    on a per-directory basis using the Windows registry. The configuration
  1742.    values are stored in the registry key HKLM\SOFTWARE\PHP\Per Directory
  1743.    Values, in the sub-keys corresponding to the path names. For example,
  1744.    configuration values for the directory c:\inetpub\wwwroot would be
  1745.    stored in the key HKLM\SOFTWARE\PHP\Per Directory
  1746.    Values\c\inetpub\wwwroot. The settings for the directory would be
  1747.    active for any script running from this directory or any subdirectory
  1748.    of it. The values under the key should have the name of the PHP
  1749.    configuration directive and the string value. PHP constants in the
  1750.    values are not parsed. However, only configuration values changeable in
  1751.    PHP_INI_USER can be set this way, PHP_INI_PERDIR values can not.
  1752.      __________________________________________________________________
  1753.  
  1754. Other interfaces to PHP
  1755.  
  1756.    Regardless of how you run PHP, you can change certain values at runtime
  1757.    of your scripts through ini_set(). See the documentation on the
  1758.    ini_set() page for more information.
  1759.  
  1760.    If you are interested in a complete list of configuration settings on
  1761.    your system with their current values, you can execute the phpinfo()
  1762.    function, and review the resulting page. You can also access the values
  1763.    of individual configuration directives at runtime using ini_get() or
  1764.    get_cfg_var().
  1765.      __________________________________________________________________
  1766.  
  1767. Chapter 6. Installation FAQ
  1768.  
  1769.    This section holds common questions about the way to install PHP. PHP
  1770.    is available for almost any OS (except maybe for MacOS before OSX), and
  1771.    almost any web server.
  1772.  
  1773.    To install PHP, follow the instructions in Installing PHP.
  1774.  
  1775.    1. Why shouldn't I use Apache2 with a threaded MPM in a production
  1776.           environment?
  1777.  
  1778.    2. Unix/Windows: Where should my php.ini file be located?
  1779.    3. Unix: I installed PHP, but every time I load a document, I get the
  1780.           message 'Document Contains No Data'! What's going on here?
  1781.  
  1782.    4. Unix: I installed PHP using RPMS, but Apache isn't processing the
  1783.           PHP pages! What's going on here?
  1784.  
  1785.    5. Unix: I installed PHP 3 using RPMS, but it doesn't compile with the
  1786.           database support I need! What's going on here?
  1787.  
  1788.    6. Unix: I patched Apache with the FrontPage extensions patch, and
  1789.           suddenly PHP stopped working. Is PHP incompatible with the
  1790.           Apache FrontPage extensions?
  1791.  
  1792.    7. Unix/Windows: I have installed PHP, but when I try to access a PHP
  1793.           script file via my browser, I get a blank screen.
  1794.  
  1795.    8. Unix/Windows: I have installed PHP, but when try to access a PHP
  1796.           script file via my browser, I get a server 500 error.
  1797.  
  1798.    9. Some operating systems: I have installed PHP without errors, but
  1799.           when I try to start apache I get undefined symbol errors:
  1800.  
  1801. [mybox:user /src/php4] root# apachectl configtest
  1802.  apachectl: /usr/local/apache/bin/httpd Undefined symbols:
  1803.   _compress
  1804.   _uncompress
  1805.  
  1806.    10. Windows: I have installed PHP, but when I to access a PHP script
  1807.           file via my browser, I get the error:
  1808.  
  1809. cgi error:
  1810.  The specified CGI application misbehaved by not
  1811.  returning a complete set of HTTP headers.
  1812.  The headers it did return are:
  1813.  
  1814.    11. Windows: I've followed all the instructions, but still can't get
  1815.           PHP and IIS to work together!
  1816.  
  1817.    12. When running PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get
  1818.           the following error: Security Alert! PHP CGI cannot be accessed
  1819.           directly..
  1820.  
  1821.    13. How do I know if my php.ini is being found and read? It seems like
  1822.           it isn't as my changes aren't being implemented.
  1823.  
  1824.    14. How do I add my PHP directory to the PATH on Windows?
  1825.    15. How do I make the php.ini file available to PHP on windows?
  1826.    16. Is it possible to use Apache content negotiation (MultiViews
  1827.           option) with PHP?
  1828.  
  1829.    17. Is PHP limited to process GET and POST request methods only?
  1830.  
  1831.    1. Why shouldn't I use Apache2 with a threaded MPM in a production
  1832.    environment?
  1833.  
  1834.    PHP is glue. It is the glue used to build cool web applications by
  1835.    sticking dozens of 3rd-party libraries together and making it all
  1836.    appear as one coherent entity through an intuitive and easy to learn
  1837.    language interface. The flexibility and power of PHP relies on the
  1838.    stability and robustness of the underlying platform. It needs a working
  1839.    OS, a working web server and working 3rd-party libraries to glue
  1840.    together. When any of these stop working PHP needs ways to identify the
  1841.    problems and fix them quickly. When you make the underlying framework
  1842.    more complex by not having completely separate execution threads,
  1843.    completely separate memory segments and a strong sandbox for each
  1844.    request to play in, feet of clay are introduced into PHP's system.
  1845.  
  1846.    If you feel you have to use a threaded MPM, look at a FastCGI
  1847.    configuration where PHP is running in its own memory space.
  1848.  
  1849.    And finally, this warning against using a threaded MPM is not as strong
  1850.    for Windows systems because most libraries on that platform tend to be
  1851.    threadsafe.
  1852.  
  1853.    2. Unix/Windows: Where should my php.ini file be located?
  1854.  
  1855.    By default on Unix it should be in /usr/local/lib which is
  1856.    <install-path>/lib. Most people will want to change this at
  1857.    compile-time with the --with-config-file-path flag. You would, for
  1858.    example, set it with something like:
  1859.    --with-config-file-path=/etc
  1860.  
  1861.    And then you would copy php.ini-dist from the distribution to
  1862.    /etc/php.ini and edit it to make any local changes you want.
  1863.    --with-config-file-scan-dir=PATH
  1864.  
  1865.    On Windows the default path for the php.ini file is the Windows
  1866.    directory. If you're using the Apache webserver, php.ini is first
  1867.    searched in the Apaches install directory, e.g. c:\program files\apache
  1868.    group\apache. This way you can have different php.ini files for
  1869.    different versions of Apache on the same machine.
  1870.  
  1871.    See also the chapter about the configuration file.
  1872.  
  1873.    3. Unix: I installed PHP, but every time I load a document, I get the
  1874.    message 'Document Contains No Data'! What's going on here?
  1875.  
  1876.    This probably means that PHP is having some sort of problem and is
  1877.    core-dumping. Look in your server error log to see if this is the case,
  1878.    and then try to reproduce the problem with a small test case. If you
  1879.    know how to use 'gdb', it is very helpful when you can provide a
  1880.    backtrace with your bug report to help the developers pinpoint the
  1881.    problem. If you are using PHP as an Apache module try something like:
  1882.  
  1883.      * Stop your httpd processes
  1884.      * gdb httpd
  1885.      * Stop your httpd processes
  1886.      * > run -X -f /path/to/httpd.conf
  1887.      * Then fetch the URL causing the problem with your browser
  1888.      * > run -X -f /path/to/httpd.conf
  1889.      * If you are getting a core dump, gdb should inform you of this now
  1890.      * type: bt
  1891.      * You should include your backtrace in your bug report. This should
  1892.        be submitted to http://bugs.php.net/
  1893.  
  1894.    If your script uses the regular expression functions (ereg() and
  1895.    friends), you should make sure that you compiled PHP and Apache with
  1896.    the same regular expression package. This should happen automatically
  1897.    with PHP and Apache 1.3.x
  1898.  
  1899.    4. Unix: I installed PHP using RPMS, but Apache isn't processing the
  1900.    PHP pages! What's going on here?
  1901.  
  1902.    Assuming you installed both Apache and PHP from RPM packages, you need
  1903.    to uncomment or add some or all of the following lines in your
  1904.    httpd.conf file:
  1905. # Extra Modules
  1906. AddModule mod_php.c
  1907. AddModule mod_php3.c
  1908. AddModule mod_perl.c
  1909.  
  1910. # Extra Modules
  1911. LoadModule php_module         modules/mod_php.so
  1912. LoadModule php3_module        modules/libphp3.so     # for PHP 3
  1913. LoadModule php4_module        modules/libphp4.so     # for PHP 4
  1914. LoadModule perl_module        modules/libperl.so
  1915.  
  1916.    And add:
  1917. AddType application/x-httpd-php3 .php3    # for PHP 3
  1918. AddType application/x-httpd-php .php      # for PHP 4
  1919.  
  1920.    ... to the global properties, or to the properties of the VirtualDomain
  1921.    you want to have PHP support added to.
  1922.  
  1923.    5. Unix: I installed PHP 3 using RPMS, but it doesn't compile with the
  1924.    database support I need! What's going on here?
  1925.  
  1926.    Due to the way PHP 3 built, it is not easy to build a complete flexible
  1927.    PHP RPM. This issue is addressed in PHP 4. For PHP 3, we currently
  1928.    suggest you use the mechanism described in the INSTALL.REDHAT file in
  1929.    the PHP distribution. If you insist on using an RPM version of PHP 3,
  1930.    read on...
  1931.  
  1932.    The RPM packagers are setting up the RPMS to install without database
  1933.    support to simplify installations and because RPMS use /usr/ instead of
  1934.    the standard /usr/local/ directory for files. You need to tell the RPM
  1935.    spec file which databases to support and the location of the top-level
  1936.    of your database server.
  1937.  
  1938.    This example will explain the process of adding support for the popular
  1939.    MySQL database server, using the mod installation for Apache.
  1940.  
  1941.    Of course all of this information can be adjusted for any database
  1942.    server that PHP supports. We will assume you installed MySQL and Apache
  1943.    completely with RPMS for this example as well.
  1944.  
  1945.      * First remove mod_php3 :
  1946.  
  1947. rpm -e mod_php3
  1948.  
  1949.      * Then get the source rpm and INSTALL it, NOT --rebuild
  1950.  
  1951. rpm -Uvh mod_php3-3.0.5-2.src.rpm
  1952.  
  1953.      * Then edit the /usr/src/redhat/SPECS/mod_php3.spec file
  1954.        In the %build section add the database support you want, and the
  1955.        path.
  1956.        For MySQL you would add --with-mysql=/usr The %build section will
  1957.        look something like this:
  1958.  
  1959. ./configure --prefix=/usr \
  1960. --with-apxs=/usr/sbin/apxs \
  1961. --with-config-file-path=/usr/lib \
  1962. --enable-debug=no \
  1963. --enable-safe-mode \
  1964. --with-exec-dir=/usr/bin \
  1965. --with-mysql=/usr \
  1966. --with-system-regex
  1967.  
  1968.      * Once this modification is made then build the binary rpm as
  1969.        follows:
  1970.  
  1971. rpm -bb /usr/src/redhat/SPECS/mod_php3.spec
  1972.  
  1973.      * Then install the rpm
  1974.  
  1975. rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm
  1976.  
  1977.    Make sure you restart Apache, and you now have PHP 3 with MySQL support
  1978.    using RPM's. Note that it is probably much easier to just build from
  1979.    the distribution tarball of PHP 3 and follow the instructions in
  1980.    INSTALL.REDHAT found in that distribution.
  1981.  
  1982.    6. Unix: I patched Apache with the FrontPage extensions patch, and
  1983.    suddenly PHP stopped working. Is PHP incompatible with the Apache
  1984.    FrontPage extensions?
  1985.  
  1986.    No, PHP works fine with the FrontPage extensions. The problem is that
  1987.    the FrontPage patch modifies several Apache structures, that PHP relies
  1988.    on. Recompiling PHP (using 'make clean ; make') after the FP patch is
  1989.    applied would solve the problem.
  1990.  
  1991.    7. Unix/Windows: I have installed PHP, but when I try to access a PHP
  1992.    script file via my browser, I get a blank screen.
  1993.  
  1994.    Do a 'view source' in the web browser and you will probably find that
  1995.    you can see the source code of your PHP script. This means that the web
  1996.    server did not send the script to PHP for interpretation. Something is
  1997.    wrong with the server configuration - double check the server
  1998.    configuration against the PHP installation instructions.
  1999.  
  2000.    8. Unix/Windows: I have installed PHP, but when try to access a PHP
  2001.    script file via my browser, I get a server 500 error.
  2002.  
  2003.    Something went wrong when the server tried to run PHP. To get to see a
  2004.    sensible error message, from the command line, change to the directory
  2005.    containing the PHP executable (php.exe on Windows) and run php -i. If
  2006.    PHP has any problems running, then a suitable error message will be
  2007.    displayed which will give you a clue as to what needs to be done next.
  2008.    If you get a screen full of HTML codes (the output of the phpinfo()
  2009.    function) then PHP is working, and your problem may be related to your
  2010.    server configuration which you should double check.
  2011.  
  2012.    9. Some operating systems: I have installed PHP without errors, but
  2013.    when I try to start apache I get undefined symbol errors:
  2014. [mybox:user /src/php4] root# apachectl configtest
  2015.  apachectl: /usr/local/apache/bin/httpd Undefined symbols:
  2016.   _compress
  2017.   _uncompress
  2018.  
  2019.    This has actually nothing to do with PHP, but with the MySQL client
  2020.    libraries. Some need --with-zlib, others do not. This is also covered
  2021.    in the MySQL FAQ.
  2022.  
  2023.    10. Windows: I have installed PHP, but when I to access a PHP script
  2024.    file via my browser, I get the error:
  2025. cgi error:
  2026.  The specified CGI application misbehaved by not
  2027.  returning a complete set of HTTP headers.
  2028.  The headers it did return are:
  2029.  
  2030.    This error message means that PHP failed to output anything at all. To
  2031.    get to see a sensible error message, from the command line, change to
  2032.    the directory containing the PHP executable (php.exe on Windows) and
  2033.    run php -i. If PHP has any problems running, then a suitable error
  2034.    message will be displayed which will give you a clue as to what needs
  2035.    to be done next. If you get a screen full of HTML codes (the output of
  2036.    the phpinfo() function) then PHP is working.
  2037.  
  2038.    Once PHP is working at the command line, try accessing the script via
  2039.    the browser again. If it still fails then it could be one of the
  2040.    following:
  2041.  
  2042.      * File permissions on your PHP script, php.exe, php4ts.dll, php.ini
  2043.        or any PHP extensions you are trying to load are such that the
  2044.        anonymous internet user ISUR_<machinename> cannot access them.
  2045.      * The script file does not exist (or possibly isn't where you think
  2046.        it is relative to your web root directory). Note that for IIS you
  2047.        can trap this error by ticking the 'check file exists' box when
  2048.        setting up the script mappings in the Internet Services Manager. If
  2049.        a script file does not exist then the server will return a 404
  2050.        error instead. There is also the additional benefit that IIS will
  2051.        do any authentication required for you based on the NTLanMan
  2052.        permissions on your script file.
  2053.  
  2054.    11. Windows: I've followed all the instructions, but still can't get
  2055.    PHP and IIS to work together!
  2056.  
  2057.    Make sure any user who needs to run a PHP script has the rights to run
  2058.    php.exe! IIS uses an anonymous user which is added at the time IIS is
  2059.    installed. This user needs rights to php.exe. Also, any authenticated
  2060.    user will also need rights to execute php.exe. And for IIS4 you need to
  2061.    tell it that PHP is a script engine. Also, you will want to read this
  2062.    faq.
  2063.  
  2064.    12. When running PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get
  2065.    the following error: Security Alert! PHP CGI cannot be accessed
  2066.    directly..
  2067.  
  2068.    You must set the cgi.force_redirect directive to 0. It defaults to 1 so
  2069.    be sure the directive isn't commented out (with a ;). Like all
  2070.    directives, this is set in php.ini
  2071.  
  2072.    Because the default is 1, it's critical that you're 100% sure that the
  2073.    correct php.ini file is being read. Read this faq for details.
  2074.  
  2075.    13. How do I know if my php.ini is being found and read? It seems like
  2076.    it isn't as my changes aren't being implemented.
  2077.  
  2078.    To be sure your php.ini is being read by PHP, make a call to phpinfo()
  2079.    and near the top will be a listing called Configuration File (php.ini).
  2080.    This will tell you where PHP is looking for php.ini and whether or not
  2081.    it's being read. If just a directory PATH exists than it's not being
  2082.    read and you should put your php.ini in that directory. If php.ini is
  2083.    included within the PATH than it is being read.
  2084.  
  2085.    If php.ini is being read and you're running PHP as a module, then be
  2086.    sure to restart your web server after making changes to php.ini
  2087.  
  2088.    14. How do I add my PHP directory to the PATH on Windows?
  2089.  
  2090.    On Windows NT, 2000, XP and 2003:
  2091.  
  2092.      * Go to Control Panel and open the System icon (Start -> Settings ->
  2093.        Control Panel -> System, or just Start -> Control Panel -> System
  2094.        for Windows XP/2003)
  2095.      * Go to the Advanced tab
  2096.      * Click on the 'Environment Variables' button
  2097.      * Look into the 'System Variables' pane
  2098.      * Find the Path entry (you may need to scroll to find it)
  2099.      * Double click on the Path entry
  2100.      * Enter your PHP directory at the end, including ';' before (e.g.
  2101.        ;C:\php)
  2102.      * Press OK and restart your computer
  2103.  
  2104.    On Windows 98/Me you need to edit the autoexec.bat file:
  2105.  
  2106.      * Open the Notepad (Start -> Run and enter notepad)
  2107.      * Open the C:\autoexec.bat file
  2108.      * Locate the line with PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... and
  2109.        add: ;C:\php to the end of the line
  2110.      * Save the file and restart your computer
  2111.  
  2112.      Note: Be sure to reboot after following the steps above to ensure
  2113.      that the PATH changes are applied.
  2114.  
  2115.    The PHP manual used to promote the copying of files into the Windows
  2116.    system directory, this is because this directory (C:\Windows, C:\WINNT,
  2117.    etc.) is by default in the systems PATH. Copying files into the Windows
  2118.    system directory has long since been deprecated and may cause problems.
  2119.  
  2120.    15. How do I make the php.ini file available to PHP on windows?
  2121.  
  2122.    There are several ways of doing this. If you are using Apache, read
  2123.    their installation specific instructions (Apache 1, Apache 2),
  2124.    otherwise you must set the PHPRC environment variable:
  2125.  
  2126.    On Windows NT, 2000, XP and 2003:
  2127.  
  2128.      * Go to Control Panel and open the System icon (Start -> Settings ->
  2129.        Control Panel -> System, or just Start -> Control Panel -> System
  2130.        for Windows XP/2003)
  2131.      * Go to the Advanced tab
  2132.      * Click on the 'Environment Variables' button
  2133.      * Look into the 'System variables' pane
  2134.      * Click on 'New' and enter 'PHPRC' as the variable name and the
  2135.        directory where php.ini is located as the variable value (e.g.
  2136.        C:\php)
  2137.      * Press OK and restart your computer
  2138.  
  2139.    On Windows 98/Me you need to edit the autoexec.bat file:
  2140.  
  2141.      * Open the Notepad (Start -> Run and enter notepad)
  2142.      * Open the C:\autoexec.bat file
  2143.      * Add a new line to the end of the file: set PHPRC=C:\php (replace
  2144.        C:\php with the directory where php.ini is located). Please note
  2145.        that the path cannot contain spaces. For instance, if you have
  2146.        installed PHP in C:\Program Files\PHP, you would enter
  2147.        C:\PROGRA~1\PHP instead.
  2148.      * Save the file and restart your computer
  2149.  
  2150.    16. Is it possible to use Apache content negotiation (MultiViews
  2151.    option) with PHP?
  2152.  
  2153.    If links to PHP files include extension, everything works perfect. This
  2154.    FAQ is only for the case when links to PHP files don't include
  2155.    extension and you want to use content negotiation to choose PHP files
  2156.    from URL with no extension. In this case, replace the line AddType
  2157.    application/x-httpd-php .php with:
  2158. # PHP 4
  2159. AddHandler php-script php
  2160. AddType text/html php
  2161.  
  2162. # PHP 5
  2163. AddHandler php5-script php
  2164. AddType text/html php
  2165.  
  2166.    This solution doesn't work for Apache 1 as PHP module doesn't catch
  2167.    php-script.
  2168.  
  2169.    17. Is PHP limited to process GET and POST request methods only?
  2170.  
  2171.    No, it is possible to handle any request method, e.g. CONNECT. Proper
  2172.    response status can be sent with header(). If only GET and POST methods
  2173.    should be handled, it can be achieved with this Apache configuration:
  2174. <LimitExcept GET POST>
  2175. Deny from all
  2176. </LimitExcept>
  2177.