Annotation of embedaddon/php/win32/install.txt, revision 1.1

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

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