summaryrefslogtreecommitdiff
path: root/win32/install.txt
diff options
context:
space:
mode:
Diffstat (limited to 'win32/install.txt')
-rw-r--r--win32/install.txt1939
1 files changed, 1939 insertions, 0 deletions
diff --git a/win32/install.txt b/win32/install.txt
new file mode 100644
index 0000000..b1d4ee5
--- /dev/null
+++ b/win32/install.txt
@@ -0,0 +1,1939 @@
+Installing PHP
+ __________________________________________________________________
+
+ Table of Contents
+ Preface
+ 1. General Installation Considerations
+ 2. Installation on Windows systems
+
+ Windows Installer
+ Manual Installation Steps
+ ActiveScript
+ Microsoft IIS / PWS
+ Apache 1.3.x on Microsoft Windows
+ Apache 2.0.x on Microsoft Windows
+ Sun, iPlanet and Netscape servers on Microsoft Windows
+ OmniHTTPd Server
+ Sambar Server on Microsoft Windows
+ Xitami on Microsoft Windows
+ Installation of extensions on Windows
+
+ 3. Installation of PECL extensions
+
+ Introduction to PECL Installations
+ Downloading PECL extensions
+ PECL for Windows users
+ Compiling shared PECL extensions with the pecl command
+ Compiling shared PECL extensions with phpize
+ Compiling PECL extensions statically into PHP
+
+ 4. Problems?
+
+ Read the FAQ
+ Other problems
+ Bug reports
+
+ 5. Runtime Configuration
+
+ The configuration file
+ How to change configuration settings
+
+ 6. Installation FAQ
+ __________________________________________________________________
+
+Preface
+
+ These installation instructions were generated from the HTML version of
+ the PHP Manual so formatting and linking have been altered. See the
+ online and updated version at: http://php.net/install.windows
+ __________________________________________________________________
+
+Chapter 1. General Installation Considerations
+
+ Before starting the installation, first you need to know what do you
+ want to use PHP for. There are three main fields you can use PHP, as
+ described in the What can PHP do? section:
+
+ * Websites and web applications (server-side scripting)
+ * Command line scripting
+ * Desktop (GUI) applications
+
+ For the first and most common form, you need three things: PHP itself,
+ a web server and a web browser. You probably already have a web
+ browser, and depending on your operating system setup, you may also
+ have a web server (e.g. Apache on Linux and MacOS X; IIS on Windows).
+ You may also rent webspace at a company. This way, you don't need to
+ set up anything on your own, only write your PHP scripts, upload it to
+ the server you rent, and see the results in your browser.
+
+ In case of setting up the server and PHP on your own, you have two
+ choices for the method of connecting PHP to the server. For many
+ servers PHP has a direct module interface (also called SAPI). These
+ servers include Apache, Microsoft Internet Information Server, Netscape
+ and iPlanet servers. Many other servers have support for ISAPI, the
+ Microsoft module interface (OmniHTTPd for example). If PHP has no
+ module support for your web server, you can always use it as a CGI or
+ FastCGI processor. This means you set up your server to use the CGI
+ executable of PHP to process all PHP file requests on the server.
+
+ If you are also interested to use PHP for command line scripting (e.g.
+ write scripts autogenerating some images for you offline, or processing
+ text files depending on some arguments you pass to them), you always
+ need the command line executable. For more information, read the
+ section about writing command line PHP applications. In this case, you
+ need no server and no browser.
+
+ With PHP you can also write desktop GUI applications using the PHP-GTK
+ extension. This is a completely different approach than writing web
+ pages, as you do not output any HTML, but manage Windows and objects
+ within them. For more information about PHP-GTK, please visit the site
+ dedicated to this extension. PHP-GTK is not included in the official
+ PHP distribution.
+
+ From now on, this section deals with setting up PHP for web servers on
+ Unix and Windows with server module interfaces and CGI executables. You
+ will also find information on the command line executable in the
+ following sections.
+
+ PHP source code and binary distributions for Windows can be found at
+ http://www.php.net/downloads.php. We recommend you to choose a mirror
+ nearest to you for downloading the distributions.
+ __________________________________________________________________
+
+Chapter 2. Installation on Windows systems
+
+ This section applies to Windows 98/Me and Windows NT/2000/XP/2003. PHP
+ will not work on 16 bit platforms such as Windows 3.1 and sometimes we
+ refer to the supported Windows platforms as Win32. Windows 95 is no
+ longer supported as of PHP 4.3.0.
+
+ There are two main ways to install PHP for Windows: either manually or
+ by using the installer.
+
+ If you have Microsoft Visual Studio, you can also build PHP from the
+ original source code.
+
+ Once you have PHP installed on your Windows system, you may also want
+ to load various extensions for added functionality.
+
+ Warning
+
+ There are several all-in-one installers over the Internet, but none of
+ those are endorsed by PHP.net, as we believe that the manual
+ installation is the best choice to have your system secure and
+ optimised.
+ __________________________________________________________________
+
+Windows Installer (PHP 5.2 and later)
+
+ The Windows PHP installer for later versions of PHP is built using MSI
+ technology using the Wix Toolkit (http://wix.sourceforge.net/). It will
+ install and configure PHP and all the built-in and PECL extensions, as
+ well as configure many of the popular web servers such as IIS, Apache,
+ and Xitami.
+
+ First, install your selected HTTP (web) server on your system, and make
+ sure that it works. Then proceed with one of the following install
+ types.
+ __________________________________________________________________
+
+Normal Install
+
+ Run the MSI installer and follow the instructions provided by the
+ installation wizard. You will be prompted to select the Web Server you
+ wish to configure first, along with any configuration details needed.
+
+ You will then be prompted to select which features and extensions you
+ wish to install and enable. By selecting "Will be installed on local
+ hard drive" in the drop-down menu for each item you can trigger whether
+ to install the feature or not. By selecting "Entire feature will be
+ installed on local hard drive", you will be able to install all
+ sub-features of the included feature ( for example by selecting this
+ options for the feature "PDO" you will install all PDO Drivers ).
+
+ Warning
+
+ It is not recommended to install all extensions by default, since many
+ other them require dependencies from outside PHP in order to function
+ properly. Instead, use the Installation Repair Mode that can be
+ triggered thru the 'Add/Remove Programs' control panel to enable or
+ disable extensions and features after installation.
+
+ The installer then sets up PHP to be used in Windows and the php.ini
+ file, and configures certain web servers to use PHP. The installer will
+ currently configure IIS (CGI mode only), Apache, Xitami, and Sambar
+ Server; if you are using a different web server you'll need to
+ configure it manually.
+ __________________________________________________________________
+
+Silent Install
+
+ The installer also supports a silent mode, which is helpful for Systems
+ Administrators to deploy PHP easily. To use silent mode:
+ msiexec.exe /i php-VERSION-win32-install.msi /q
+
+ You can control the install directory by passing it as a parameter to
+ the install. For example, to install to e:\php:
+ msiexec.exe /i php-VERSION-win32-install.msi /q INSTALLDIR=e:\php
+
+ You can also use the same syntax to specify the Apache Configuration
+ Directory (APACHEDIR), the Sambar Server directory (SAMBARDIR), and the
+ Xitami Server directory (XITAMIDIR).
+
+ You can also specify what features to install. For example, to install
+ the mysqli extension and the CGI executable:
+ msiexec.exe /i php-VERSION-win32-install.msi /q ADDLOCAL=cgi,ext_php_mysqli
+
+ The current list of Features to install is as follows:
+MainExecutable - php.exe executable
+ScriptExecutable - php-win.exe executable
+ext_php_* - the various extensions ( for example: ext_php_mysql for MySQL )
+apache13 - Apache 1.3 module
+apache20 - Apache 2.0 module
+apache22 - Apache 2,2 module
+apacheCGI - Apache CGI executable
+iis4ISAPI - IIS ISAPI module
+iis4CGI - IIS CGI executable
+NSAPI - Sun/iPlanet/Netscape server module
+Xitami - Xitami CGI executable
+Sambar - Sambar Server ISAPI module
+CGI - php-cgi.exe executable
+PEAR - PEAR installer
+Manual - PHP Manual in CHM Format
+
+ For more information on installing MSI installers from the command
+ line, visit
+ http://msdn.microsoft.com/library/en-us/msi/setup/command_line_options.
+ asp
+ __________________________________________________________________
+
+Windows Installer (PHP 5.1.0 and earlier)
+
+ The Windows PHP installer is available from the downloads page at
+ http://www.php.net/downloads.php. This installs the CGI version of PHP
+ and for IIS, PWS, and Xitami, it configures the web server as well. The
+ installer does not include any extra external PHP extensions
+ (php_*.dll) as you'll only find those in the Windows Zip Package and
+ PECL downloads.
+
+ Note: While the Windows installer is an easy way to make PHP work,
+ it is restricted in many aspects as, for example, the automatic
+ setup of extensions is not supported. Use of the installer isn't the
+ preferred method for installing PHP.
+
+ First, install your selected HTTP (web) server on your system, and make
+ sure that it works.
+
+ Run the executable installer and follow the instructions provided by
+ the installation wizard. Two types of installation are supported -
+ standard, which provides sensible defaults for all the settings it can,
+ and advanced, which asks questions as it goes along.
+
+ The installation wizard gathers enough information to set up the
+ php.ini file, and configure certain web servers to use PHP. One of the
+ web servers the PHP installer does not configure for is Apache, so
+ you'll need to configure it manually.
+
+ Once the installation has completed, the installer will inform you if
+ you need to restart your system, restart the server, or just start
+ using PHP.
+
+ Warning
+
+ Be aware, that this setup of PHP is not secure. If you would like to
+ have a secure PHP setup, you'd better go on the manual way, and set
+ every option carefully. This automatically working setup gives you an
+ instantly working PHP installation, but it is not meant to be used on
+ online servers.
+ __________________________________________________________________
+
+Manual Installation Steps
+
+ This install guide will help you manually install and configure PHP
+ with a web server on Microsoft Windows. To get started you'll need to
+ download the zip binary distribution from the downloads page at
+ http://www.php.net/downloads.php.
+
+ Although there are many all-in-one installation kits, and we also
+ distribute a PHP installer for Microsoft Windows, we recommend you take
+ the time to setup PHP yourself as this will provide you with a better
+ understanding of the system, and enables you to install PHP extensions
+ easily when needed.
+
+ Upgrading from a previous PHP version: Previous editions of the
+ manual suggest moving various ini and DLL files into your SYSTEM
+ (i.e. C:\WINDOWS) folder and while this simplifies the installation
+ procedure it makes upgrading difficult. We advise you remove all of
+ these files (like php.ini and PHP related DLLs from the Windows
+ SYSTEM folder) before moving on with a new PHP installation. Be sure
+ to backup these files as you might break the entire system. The old
+ php.ini might be useful in setting up the new PHP as well. And as
+ you'll soon learn, the preferred method for installing PHP is to
+ keep all PHP related files in one directory and have this directory
+ available to your systems PATH.
+
+ MDAC requirements: If you use Microsoft Windows 98/NT4 download the
+ latest version of the Microsoft Data Access Components (MDAC) for
+ your platform. MDAC is available at http://msdn.microsoft.com/data/.
+ This requirement exists because ODBC is built into the distributed
+ Windows binaries.
+
+ The following steps should be completed on all installations before any
+ server specific instructions are performed:
+
+ Extract the distribution file into a directory of your choice. If you
+ are installing PHP 4, extract to C:\, as the zip file expands to a
+ foldername like php-4.3.7-Win32. If you are installing PHP 5, extract
+ to C:\php as the zip file doesn't expand as in PHP 4. You may choose a
+ different location but do not have spaces in the path (like C:\Program
+ Files\PHP) as some web servers will crash if you do.
+
+ The directory structure extracted from the zip is different for PHP
+ versions 4 and 5 and look like as follows:
+
+ Example 2-2. PHP 5 package structure
+c:\php
+ |
+ +--dev
+ | |
+ | |-php5ts.lib
+ |
+ +--ext -- extension DLLs for PHP
+ | |
+ | |-php_bz2.dll
+ | |
+ | |-php_cpdf.dll
+ | |
+ | |-..
+ |
+ +--extras
+ | |
+ | +--mibs -- support files for SNMP
+ | |
+ | +--openssl -- support files for Openssl
+ | |
+ | +--pdf-related -- support files for PDF
+ | |
+ | |-mime.magic
+ |
+ +--pear -- initial copy of PEAR
+ |
+ |
+ |-go-pear.bat -- PEAR setup script
+ |
+ |-fdftk.dll
+ |
+ |-..
+ |
+ |-php-cgi.exe -- CGI executable
+ |
+ |-php-win.exe -- executes scripts without an opened command prompt
+ |
+ |-php.exe -- CLI executable - ONLY for command line scripting
+ |
+ |-..
+ |
+ |-php.ini-development -- development php.ini settings
+ |
+ |-php.ini-production -- recommended php.ini settings for production
+ |
+ |-php5activescript.dll
+ |
+ |-php5apache.dll
+ |
+ |-php5apache2.dll
+ |
+ |-..
+ |
+ |-php5ts.dll -- core PHP DLL
+ |
+ |-...
+
+ Notice the differences and similarities. Both PHP 4 and PHP 5 have a
+ CGI executable, a CLI executable, and server modules, but they are
+ located in different folders and/or have different names. While PHP 4
+ packages have the server modules in the sapi folder, PHP 5
+ distributions have no such directory and instead they're in the PHP
+ folder root. The supporting DLLs for the PHP 5 extensions are also not
+ in a seperate directory.
+
+ Note: In PHP 4, you should move all files located in the dll and
+ sapi folders to the main folder (e.g. C:\php).
+
+ Here is a list of server modules shipped with PHP 5:
+
+ * sapi/php5apache2_2.dll - Apache 2.2.x module.
+ * sapi/php5apache.dll (php5apache.dll) - Apache 1.x module
+ * sapi/php5apache2.dll (php5apache2.dll) - - Apache 2.0.x module.
+ * sapi/php5isapi.dll - ISAPI Module for ISAPI compliant web servers
+ like IIS 5.0 or newer. However the FCGI SAPI is recommended with
+ IIS
+ * sapi/php5nsapi.dll (php5nsapi.dll) - Sun/iPlanet/Netscape server
+ module.
+
+ Server modules provide significantly better performance and additional
+ functionality compared to the CGI binary. The FastCGI is significantly
+ more stable and can be faster than the ISAPI module with IIS.
+ The CLI version is designed to let you use PHP for command line
+ scripting. More information about CLI is available in the chapter
+ about using PHP from the command line.
+
+ Warning
+
+ The SAPI modules have been significantly improved as of the 4.1
+ release, however, in older systems you may encounter server errors or
+ other server modules failing, such as ASP.
+
+ The CGI and CLI binaries, and the web server modules all require the
+ php5ts.dll file to be available to them. You have to make
+ sure that this file can be found by your PHP installation. The search
+ order for this DLL is as follows:
+
+ * The same directory from where php.exe is called, or in case you use
+ a SAPI module, the web server's directory (e.g. C:\Program
+ Files\Apache Group\Apache2\bin).
+ * Any directory in your Windows PATH environment variable.
+
+ To make php5ts.dll available you have three options: copy
+ the file to the Windows system directory, copy the file to the web
+ server's directory, or add your PHP directory, C:\php to the PATH. For
+ better maintenance, we advise you to follow the last option, add C:\php
+ to the PATH, because it will be simpler to upgrade PHP in the future.
+ Read more about how to add your PHP directory to PATH in the
+ corresponding FAQ entry (and then don't forget to restart the computer
+ - logoff isn't enough).
+
+ The next step is to set up a valid configuration file for PHP, php.ini.
+ There are two ini files distributed in the zip file, php.ini-development
+ and php.ini-production. We advise you to use php.ini-production,
+ because we optimized the default settings in this file for performance,
+ and security. Read this well documented file carefully because it has
+ changes from php.ini-production that will drastically affect your setup.
+ Some examples are display_errors being off and magic_quotes_gpc being off.
+ In addition to reading these, study the ini settings and set every
+ element manually yourself. If you would like to achieve the best
+ security, then this is the way for you, although PHP works fine with
+ these default ini files. Copy your chosen ini-file to a directory that
+ PHP is able to find and rename it to php.ini. PHP searches for php.ini
+ in the locations described in the Section called The configuration file
+ in Chapter 5 section.
+
+ If you are running Apache 2, the simpler option is to use the PHPIniDir
+ directive (read the installation on Apache 2 page), otherwise your best
+ option is to set the PHPRC environment variable. This process is
+ explained in the following FAQ entry.
+
+ Note: If you're using NTFS on Windows NT, 2000, XP or 2003, make
+ sure that the user running the web server has read permissions to
+ your php.ini (e.g. make it readable by Everyone).
+
+ The following steps are optional:
+
+ * Edit your new php.ini file. If you plan to use OmniHTTPd, do not
+ follow the next step. Set the doc_root to point to your web servers
+ document_root. For example:
+
+doc_root = c:\inetpub\wwwroot // for IIS/PWS
+
+doc_root = c:\apache\htdocs // for Apache
+
+ * Choose the extensions you would like to load when PHP starts. See
+ the section about Windows extensions, about how to set up one, and
+ what is already built in. Note that on a new installation it is
+ advisable to first get PHP working and tested without any
+ extensions before enabling them in php.ini.
+ * On PWS and IIS, you can set the browscap configuration setting to
+ point to: c:\windows\system\inetsrv\browscap.ini on Windows 9x/Me,
+ c:\winnt\system32\inetsrv\browscap.ini on NT/2000, and
+ c:\windows\system32\inetsrv\browscap.ini on XP. For an up-to-date
+ browscap.ini, read the following FAQ.
+
+ PHP is now setup on your system. The next step is to choose a web
+ server, and enable it to run PHP. Choose a web server from the table of
+ contents.
+ __________________________________________________________________
+
+ActiveScript
+
+ This section contains notes specific to the ActiveScript installation.
+
+ ActiveScript is a Windows only SAPI that enables you to use PHP script
+ in any ActiveScript compliant host, like Windows Script Host,
+ ASP/ASP.NET, Windows Script Components or Microsoft Scriptlet control.
+
+ As of PHP 5.0.1, ActiveScript has been moved to the PECL repository.
+ The DLL for this PECL extension may be downloaded from either the PHP
+ Downloads page or from http://pecl4win.php.net/
+
+ Note: You should read the manual installation steps first!
+
+ After installing PHP, you should download the ActiveScript DLL
+ (php5activescript.dll) and place it in the main PHP folder (e.g.
+ C:\php).
+
+ After having all the files needed, you must register the DLL on your
+ system. To achieve this, open a Command Prompt window (located in the
+ Start Menu). Then go to your PHP directory by typing something like cd
+ C:\php. To register the DLL just type regsvr32 php5activescript.dll.
+
+ To test if ActiveScript is working, create a new file, named test.wsf
+ (the extension is very important) and type:
+<job id="test">
+
+ <script language="PHPScript">
+ $WScript->Echo("Hello World!");
+ </script>
+
+</job>
+
+ Save and double-click on the file. If you receive a little window
+ saying "Hello World!" you're done.
+
+ Note: In PHP 4, the engine was named 'ActivePHP', so if you are
+ using PHP 4, you should replace 'PHPScript' with 'ActivePHP' in the
+ above example.
+
+ Note: ActiveScript doesn't use the default php.ini file. Instead, it
+ will look only in the same directory as the .exe that caused it to
+ load. You should create php-activescript.ini and place it in that
+ folder, if you wish to load extensions, etc.
+ __________________________________________________________________
+
+Microsoft IIS / PWS
+
+ This section contains notes and hints specific to IIS (Microsoft
+ Internet Information Server).
+
+ Warning
+
+ By using the CGI setup, your server is open to several possible
+ attacks. Please read our CGI security section to learn how to defend
+ yourself from those attacks.
+ __________________________________________________________________
+
+General considerations for all installations of PHP with IIS or PWS
+
+ * First, read the Manual Installation Instructions. Do not skip this
+ step as it provides crucial information for installing PHP on
+ Windows.
+ * CGI users must set the cgi.force_redirect PHP directive to 0 inside
+ php.ini. Read the faq on cgi.force_redirect for important details.
+ Also, CGI users may want to set the cgi.redirect_status_env
+ directive. When using directives, be sure these directives aren't
+ commented out inside php.ini.
+ * The PHP 4 CGI is named php.exe while in PHP 5 it's php-cgi.exe. In
+ PHP 5, php.exe is the CLI, and not the CGI.
+ * Modify the Windows PATH environment variable to include the PHP
+ directory. This way the PHP DLL files and PHP executables can all
+ remain in the PHP directory without cluttering up the Windows
+ system directory. For more details, see the FAQ on Setting the
+ PATH.
+ * The IIS user (usually IUSR_MACHINENAME) needs permission to read
+ various files and directories, such as php.ini, docroot, and the
+ session tmp directory.
+ * Be sure the extension_dir and doc_root PHP directives are
+ appropriately set in php.ini. These directives depend on the system
+ that PHP is being installed on. In PHP 4, the extension_dir is
+ extensions while with PHP 5 it's ext. So, an example PHP 5
+ extensions_dir value is "c:\php\ext" and an example IIS doc_root
+ value is "c:\Inetpub\wwwroot".
+ * PHP extension DLL files, such as php_mysql.dll and php_curl.dll,
+ are found in the zip package of the PHP download (not the PHP
+ installer). In PHP 5, many extensions are part of PECL and can be
+ downloaded in the "Collection of PECL modules" package. Files such
+ as php_zip.dll and php_ssh2.dll. Download PHP files here.
+ * When defining the executable, the 'check that file exists' box may
+ also be checked. For a small performance penalty, the IIS (or PWS)
+ will check that the script file exists and sort out authentication
+ before firing up PHP. This means that the web server will provide
+ sensible 404 style error messages instead of CGI errors complaining
+ that PHP did not output any data.
+ __________________________________________________________________
+
+Windows NT/200x/XP and IIS 4 or newer
+
+ PHP may be installed as a CGI binary, or with the ISAPI module. In
+ either case, you need to start the Microsoft Management Console (may
+ appear as 'Internet Services Manager', either in your Windows NT 4.0
+ Option Pack branch or the Control Panel=>Administrative Tools under
+ Windows 2000/XP). Then right click on your Web server node (this will
+ most probably appear as 'Default Web Server'), and select 'Properties'.
+
+ If you want to use the CGI binary, do the following:
+
+ * Under 'Home Directory', 'Virtual Directory', or 'Directory', do the
+ following:
+ * Change the Execute Permissions to 'Scripts only'
+ * Click on the 'Configuration' button, and choose the Application
+ Mappings tab. Click Add and set the Executable path to the
+ appropriate CGI file. An example PHP 5 value is: C:\php\php-cgi.exe
+ Supply .php as the extension. Leave 'Method exclusions' blank, and
+ check the 'Script engine' checkbox. Now, click OK a few times.
+ * Set up the appropriate security. (This is done in Internet Service
+ Manager), and if your NT Server uses NTFS file system, add execute
+ rights for I_USR_ to the directory that contains php.exe /
+ php-cgi.exe.
+
+ To use the ISAPI module, do the following:
+
+ * If you don't want to perform HTTP Authentication using PHP, you can
+ (and should) skip this step. Under ISAPI Filters, add a new ISAPI
+ filter. Use PHP as the filter name, and supply a path to the
+ php5isapi.dll.
+ * Under 'Home Directory', 'Virtual Directory', or 'Directory', do the
+ following:
+ * Change the Execute Permissions to 'Scripts only'
+ * Click on the 'Configuration' button, and choose the Application
+ Mappings tab. Click Add and set the Executable path to the
+ appropriate ISAPI DLL. An example PHP 5 value is:
+ C:\php\php5isapi.dll Supply .php as the extension. Leave 'Method
+ exclusions' blank, and check the 'Script engine' checkbox. Now,
+ click OK a few times.
+ * Stop IIS completely (NET STOP iisadmin)
+ * Start IIS again (NET START w3svc)
+
+ With IIS 6 (2003 Server), open up the IIS Manager, go to Web Service
+ Extensions, choose "Add a new Web service extension", enter in a name
+ such as PHP, choose the Add button and for the value browse to either
+ the ISAPI file (php5isapi.dll) or CGI (php.exe or
+ php-cgi.exe) then check "Set extension status to Allowed" and click OK.
+
+ In order to use index.php as a default content page, do the following:
+ From within the Documents tab, choose Add. Type in index.php and click
+ OK. Adjust the order by choosing Move Up or Move Down. This is similar
+ to setting DirectoryIndex with Apache.
+
+ The steps above must be repeated for each extension that is to be
+ associated with PHP scripts. .php is the most common although .php3 may
+ be required for legacy applications.
+
+ If you experience 100% CPU usage after some time, turn off the IIS
+ setting Cache ISAPI Application.
+ __________________________________________________________________
+
+Windows and IIS
+
+See http://www.php.net/install.windows
+ __________________________________________________________________
+
+Apache 1.3.x on Microsoft Windows
+
+ This section contains notes and hints specific to Apache 1.3.x installs
+ of PHP on Microsoft Windows systems. There are also instructions and
+ notes for Apache 2 on a separate page.
+
+ Note: Please read the manual installation steps first!
+
+ There are two ways to set up PHP to work with Apache 1.3.x on Windows.
+ One is to use the CGI binary (php.exe for PHP 4 and php-cgi.exe for PHP
+ 5), the other is to use the Apache Module DLL. In either case you need
+ to edit your httpd.conf to configure Apache to work with PHP, and then
+ restart the server.
+
+ It is worth noting here that now the SAPI module has been made more
+ stable under Windows, we recommend it's use above the CGI binary, since
+ it is more transparent and secure.
+
+ Although there can be a few variations of configuring PHP under Apache,
+ these are simple enough to be used by the newcomer. Please consult the
+ Apache Documentation for further configuration directives.
+
+ After changing the configuration file, remember to restart the server,
+ for example, NET STOP APACHE followed by NET START APACHE, if you run
+ Apache as a Windows Service, or use your regular shortcuts.
+
+ Note: Remember that when adding path values in the Apache
+ configuration files on Windows, all backslashes such as
+ c:\directory\file.ext must be converted to forward slashes, as
+ c:/directory/file.ext. A trailing slash may also be necessary for
+ directories.
+ __________________________________________________________________
+
+Installing as an Apache module
+
+ You should add the following lines to your Apache httpd.conf file:
+
+ Example 2-3. PHP as an Apache 1.3.x module
+
+ This assumes PHP is installed to c:\php. Adjust the path if this is not
+ the case.
+
+ For PHP 5:
+# Add to the end of the LoadModule section
+LoadModule php5_module "C:/php/php5apache.dll"
+
+# Add to the end of the AddModule section
+AddModule mod_php5.c
+
+ For both:
+# Add this line inside the <IfModule mod_mime.c> conditional brace
+AddType application/x-httpd-php .php
+
+# For syntax highlighted .phps files, also add
+AddType application/x-httpd-php-source .phps
+ __________________________________________________________________
+
+Installing as a CGI binary
+
+ If you unzipped the PHP package to C:\php\ as described in the Manual
+ Installation Steps section, you need to insert these lines to your
+ Apache configuration file to set up the CGI binary:
+
+ Example 2-4. PHP and Apache 1.3.x as CGI
+ScriptAlias /php/ "c:/php/"
+AddType application/x-httpd-php .php
+
+# For PHP 4
+Action application/x-httpd-php "/php/php.exe"
+
+# For PHP 5
+Action application/x-httpd-php "/php/php-cgi.exe"
+
+# specify the directory where php.ini is
+SetEnv PHPRC C:/php
+
+ Note that the second line in the list above can be found in the actual
+ versions of httpd.conf, but it is commented out. Remember also to
+ substitute the c:/php/ for your actual path to PHP.
+
+ Warning
+
+ By using the CGI setup, your server is open to several possible
+ attacks. Please read our CGI security section to learn how to defend
+ yourself from those attacks.
+
+ If you would like to present PHP source files syntax highlighted, there
+ is no such convenient option as with the module version of PHP. If you
+ chose to configure Apache to use PHP as a CGI binary, you will need to
+ use the highlight_file() function. To do this simply create a PHP
+ script file and add this code: <?php
+ highlight_file('some_php_script.php'); ?>.
+ __________________________________________________________________
+
+Apache 2.0.x on Microsoft Windows
+
+ This section contains notes and hints specific to Apache 2.0.x installs
+ of PHP on Microsoft Windows systems. We also have instructions and
+ notes for Apache 1.3.x users on a separate page.
+
+ Note: You should read the manual installation steps first!
+
+ Apache 2.2.x Support: Users of Apache 2.2.x may use the
+ documentation below except the appropriate DLL file is named
+ php5apache2_2.dll and it only exists as of PHP 5.2.0. See also
+ http://snaps.php.net/
+
+ Warning
+
+ We do not recommend using a threaded MPM in production with Apache2.
+ Use the prefork MPM instead, or use Apache1. For information on why,
+ read the related FAQ entry on using Apache2 with a threaded MPM
+
+ You are highly encouraged to take a look at the Apache Documentation to
+ get a basic understanding of the Apache 2.0.x Server. Also consider to
+ read the Windows specific notes for Apache 2.0.x before reading on
+ here.
+
+ PHP and Apache 2.0.x compatibility notes: The following versions of
+ PHP are known to work with the most recent version of Apache 2.0.x:
+
+ * PHP 4.3.0 or later available at http://www.php.net/downloads.php.
+ * the latest stable development version. Get the source code
+ http://snaps.php.net/php5-latest.tar.gz or download binaries for
+ Windows http://snaps.php.net/win32/php5-win32-latest.zip.
+ * a prerelease version downloadable from http://qa.php.net/.
+ * you have always the option to obtain PHP through SVN.
+
+ These versions of PHP are compatible to Apache 2.0.40 and later.
+
+ Apache 2.0 SAPI-support started with PHP 4.2.0. PHP 4.2.3 works with
+ Apache 2.0.39, don't use any other version of Apache with PHP 4.2.3.
+ However, the recommended setup is to use PHP 4.3.0 or later with the
+ most recent version of Apache2.
+
+ All mentioned versions of PHP will work still with Apache 1.3.x.
+
+ Warning
+
+ Apache 2.0.x is designed to run on Windows NT 4.0, Windows 2000 or
+ Windows XP. At this time, support for Windows 9x is incomplete. Apache
+ 2.0.x is not expected to work on those platforms at this time.
+
+ Download the most recent version of Apache 2.0.x and a fitting PHP
+ version. Follow the Manual Installation Steps and come back to go on
+ with the integration of PHP and Apache.
+
+ There are two ways to set up PHP to work with Apache 2.0.x on Windows.
+ One is to use the CGI binary the other is to use the Apache module DLL.
+ In either case you need to edit your httpd.conf to configure Apache to
+ work with PHP and then restart the server.
+
+ Note: Remember that when adding path values in the Apache
+ configuration files on Windows, all backslashes such as
+ c:\directory\file.ext must be converted to forward slashes, as
+ c:/directory/file.ext. A trailing slash may also be necessary for
+ directories.
+ __________________________________________________________________
+
+Installing as a CGI binary
+
+ You need to insert these three lines to your Apache httpd.conf
+ configuration file to set up the CGI binary:
+
+ Example 2-5. PHP and Apache 2.0 as CGI
+ScriptAlias /php/ "c:/php/"
+AddType application/x-httpd-php .php
+
+# For PHP 4
+Action application/x-httpd-php "/php/php.exe"
+
+# For PHP 5
+Action application/x-httpd-php "/php/php-cgi.exe"
+
+ Warning
+
+ By using the CGI setup, your server is open to several possible
+ attacks. Please read our CGI security section to learn how to defend
+ yourself from those attacks.
+ __________________________________________________________________
+
+Installing as an Apache module
+
+ You need to insert these two lines to your Apache httpd.conf
+ configuration file to set up the PHP module for Apache 2.0:
+
+ Example 2-6. PHP and Apache 2.0 as Module
+
+# For PHP 5 do something like this:
+LoadModule php5_module "c:/php/php5apache2.dll"
+AddType application/x-httpd-php .php
+
+# configure the path to php.ini
+PHPIniDir "C:/php"
+
+ Note: Remember to substitute your actual path to PHP for the c:/php/
+ in the above examples. Take care to use either
+ php5apache2.dll in your LoadModule directive and not php5apache.dll
+ as the latter ones are designed to run with Apache 1.3.x.
+
+ Note: If you want to use content negotiation, read related FAQ.
+
+ Warning
+
+ Don't mix up your installation with DLL files from different PHP
+ versions. You have the only choice to use the DLL's and extensions that
+ ship with your downloaded PHP version.
+ __________________________________________________________________
+
+Sun, iPlanet and Netscape servers on Microsoft Windows
+
+ This section contains notes and hints specific to Sun Java System Web
+ Server, Sun ONE Web Server, iPlanet and Netscape server installs of PHP
+ on Windows.
+
+ From PHP 4.3.3 on you can use PHP scripts with the NSAPI module to
+ generate custom directory listings and error pages. Additional
+ functions for Apache compatibility are also available. For support in
+ current web servers read the note about subrequests.
+ __________________________________________________________________
+
+CGI setup on Sun, iPlanet and Netscape servers
+
+ To install PHP as a CGI handler, do the following:
+
+ * Copy php5ts.dll to your systemroot (the directory where you
+ installed Windows)
+ * Make a file association from the command line. Type the following
+ two lines:
+
+assoc .php=PHPScript
+ftype PHPScript=c:\php\php.exe %1 %*
+
+ * In the Netscape Enterprise Administration Server create a dummy
+ shellcgi directory and remove it just after (this step creates 5
+ important lines in obj.conf and allow the web server to handle
+ shellcgi scripts).
+ * In the Netscape Enterprise Administration Server create a new mime
+ type (Category: type, Content-Type: magnus-internal/shellcgi, File
+ Suffix:php).
+ * Do it for each web server instance you want PHP to run
+
+ More details about setting up PHP as a CGI executable can be found
+ here: http://benoit.noss.free.fr/php/install-php.html
+ __________________________________________________________________
+
+NSAPI setup on Sun, iPlanet and Netscape servers
+
+ To install PHP with NSAPI, do the following:
+
+ * Copy php5ts.dll to your systemroot (the directory where you
+ installed Windows)
+ * Make a file association from the command line. Type the following
+ two lines:
+
+assoc .php=PHPScript
+ftype PHPScript=c:\php\php.exe %1 %*
+
+ * In the Netscape Enterprise Administration Server create a new mime
+ type (Category: type, Content-Type: magnus-internal/x-httpd-php,
+ File Suffix: php).
+ * Edit magnus.conf (for servers >= 6) or obj.conf (for servers < 6)
+ and add the following: You should place the lines after mime types
+ init.
+
+Init fn="load-modules" funcs="php5_init,php5_execute,php5_auth_trans" shlib="c:/
+php/sapi/php5nsapi.dll"
+Init fn="php5_init" LateInit="yes" errorString="Failed to initialise PHP!" [php_
+ini="c:/path/to/php.ini"]
+
+ The php_ini parameter is optional but with it you
+ can place your php.ini in your web server configuration directory.
+ * Configure the default object in obj.conf (for virtual server
+ classes [Sun Web Server 6.0+] in their vserver.obj.conf): In the
+ <Object name="default"> section, place this line necessarily after
+ all 'ObjectType' and before all 'AddLog' lines:
+
+Service fn="php5_execute" type="magnus-internal/x-httpd-php" [inikey=value inike
+y=value ...]
+
+ As additional parameters you can add some special
+ php.ini-values, for example you can set a
+ docroot="/path/to/docroot" specific to the context php5_execute is
+ called. For boolean ini-keys please use 0/1 as value, not
+ "On","Off",... (this will not work correctly), e.g.
+ zlib.output_compression=1 instead of zlib.output_compression="On"
+ * This is only needed if you want to configure a directory that only
+ consists of PHP scripts (same like a cgi-bin directory):
+
+<Object name="x-httpd-php">
+ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
+Service fn=php5_execute [inikey=value inikey=value ...]
+</Object>
+
+ After that you can configure a directory in the Administration
+ server and assign it the style x-httpd-php. All files in it will
+ get executed as PHP. This is nice to hide PHP usage by renaming
+ files to .html.
+ * Restart your web service and apply changes
+ * Do it for each web server instance you want PHP to run
+
+ Note: More details about setting up PHP as an NSAPI filter can be
+ found here: http://benoit.noss.free.fr/php/install-php4.html
+
+ Note: The stacksize that PHP uses depends on the configuration of
+ the web server. If you get crashes with very large PHP scripts, it
+ is recommended to raise it with the Admin Server (in the section
+ "MAGNUS EDITOR").
+ __________________________________________________________________
+
+CGI environment and recommended modifications in php.ini
+
+ Important when writing PHP scripts is the fact that Sun JSWS/Sun ONE
+ WS/iPlanet/Netscape is a multithreaded web server. Because of that all
+ requests are running in the same process space (the space of the web
+ server itself) and this space has only one environment. If you want to
+ get CGI variables like PATH_INFO, HTTP_HOST etc. it is not the correct
+ way to try this in the old PHP 3.x way with getenv() or a similar way
+ (register globals to environment, $_ENV). You would only get the
+ environment of the running web server without any valid CGI variables!
+
+ Note: Why are there (invalid) CGI variables in the environment?
+
+ Answer: This is because you started the web server process from the
+ admin server which runs the startup script of the web server, you
+ wanted to start, as a CGI script (a CGI script inside of the admin
+ server!). This is why the environment of the started web server has
+ some CGI environment variables in it. You can test this by starting
+ the web server not from the administration server. Use the command
+ line as root user and start it manually - you will see there are no
+ CGI-like environment variables.
+ __________________________________________________________________
+
+Special use for error pages or self-made directory listings (PHP >= 4.3.3)
+
+ You can use PHP to generate the error pages for "404 Not Found" or
+ similar. Add the following line to the object in obj.conf for every
+ error page you want to overwrite:
+Error fn="php5_execute" code=XXX script="/path/to/script.php" [inikey=value inik
+ey=value...]
+
+ where XXX is the HTTP error code. Please delete any other Error
+ directives which could interfere with yours. If you want to place a
+ page for all errors that could exist, leave the code parameter out.
+ Your script can get the HTTP status code with $_SERVER['ERROR_TYPE'].
+
+ Another possibility is to generate self-made directory listings. Just
+ create a PHP script which displays a directory listing and replace the
+ corresponding default Service line for type="magnus-internal/directory"
+ in obj.conf with the following:
+Service fn="php5_execute" type="magnus-internal/directory" script="/path/to/scri
+pt.php" [inikey=value inikey=value...]
+
+ For both error and directory listing pages the original URI and
+ translated URI are in the variables $_SERVER['PATH_INFO'] and
+ $_SERVER['PATH_TRANSLATED'].
+ __________________________________________________________________
+
+Note about nsapi_virtual() and subrequests (PHP >= 4.3.3)
+
+ The NSAPI module now supports the nsapi_virtual() function (alias:
+ virtual()) to make subrequests on the web server and insert the result
+ in the web page. The problem is, that this function uses some
+ undocumented features from the NSAPI library.
+
+ Under Unix this is not a problem, because the module automatically
+ looks for the needed functions and uses them if available. If not,
+ nsapi_virtual() is disabled.
+
+ Under Windows limitations in the DLL handling need the use of a
+ automatic detection of the most recent ns-httpdXX.dll file. This is
+ tested for servers till version 6.1. If a newer version of the Sun
+ server is used, the detection fails and nsapi_virtual() is disabled.
+
+ If this is the case, try the following: Add the following parameter to
+ php5_init in magnus.conf/obj.conf:
+ Init fn=php5_init ... server_lib="ns-httpdXX.dll"
+
+ where XX is the correct DLL version number. To get it, look in the
+ server-root for the correct DLL name. The DLL with the biggest filesize
+ is the right one.
+
+ You can check the status by using the phpinfo() function.
+
+ Note: But be warned: Support for nsapi_virtual() is EXPERIMENTAL!!!
+ __________________________________________________________________
+
+OmniHTTPd Server
+
+ This section contains notes and hints specific to OmniHTTPd on Windows.
+
+ Note: You should read the manual installation steps first!
+
+ Warning
+
+ By using the CGI setup, your server is open to several possible
+ attacks. Please read our CGI security section to learn how to defend
+ yourself from those attacks.
+
+ You need to complete the following steps to make PHP work with
+ OmniHTTPd. This is a CGI executable setup. SAPI is supported by
+ OmniHTTPd, but some tests have shown that it is not so stable to use
+ PHP as an ISAPI module.
+
+ Important for CGI users: Read the faq on cgi.force_redirect for
+ important details. This directive needs to be set to 0.
+
+ 1. Install OmniHTTPd server.
+ 2. Right click on the blue OmniHTTPd icon in the system tray and
+ select Properties
+ 3. Click on Web Server Global Settings
+ 4. On the 'External' tab, enter: virtual = .php | actual =
+ c:\php\php.exe (use php-cgi.exe if installing PHP 5), and use the
+ Add button.
+ 5. On the Mime tab, enter: virtual = wwwserver/stdcgi | actual = .php,
+ and use the Add button.
+ 6. Click OK
+
+ Repeat steps 2 - 6 for each extension you want to associate with PHP.
+
+ __________________________________________________________________
+
+Xitami on Microsoft Windows
+
+ This section contains notes and hints specific to Xitami on Windows.
+
+ Note: You should read the manual installation steps first!
+
+ This list describes how to set up the PHP CGI binary to work with
+ Xitami on Windows.
+
+ Important for CGI users: Read the faq on cgi.force_redirect for
+ important details. This directive needs to be set to 0. If you want
+ to use $_SERVER['PHP_SELF'] you have to enable the cgi.fix_pathinfo
+ directive.
+
+ Warning
+
+ By using the CGI setup, your server is open to several possible
+ attacks. Please read our CGI security section to learn how to defend
+ yourself from those attacks.
+
+ * Make sure the web server is running, and point your browser to
+ xitamis admin console (usually http://127.0.0.1/admin), and click
+ on Configuration.
+ * Navigate to the Filters, and put the extension which PHP should
+ parse (i.e. .php) into the field File extensions (.xxx).
+ * In Filter command or script put the path and name of your PHP CGI
+ executable i.e. C:\php\php-cgi.exe.
+ * Press the 'Save' icon.
+ * Restart the server to reflect changes.
+ __________________________________________________________________
+
+Installation of extensions on Windows
+
+ After installing PHP and a web server on Windows, you will probably
+ want to install some extensions for added functionality. You can choose
+ which extensions you would like to load when PHP starts by modifying
+ your php.ini. You can also load a module dynamically in your script
+ using dl().
+
+ The DLLs for PHP extensions are prefixed with php_.
+
+ Many extensions are built into the Windows version of PHP. This means
+ additional DLL files, and the extension directive, are not used to load
+ these extensions. The Windows PHP Extensions table lists extensions
+ that require, or used to require, additional PHP DLL files. Here's a
+ list of built in extensions:
+
+ In PHP 5 (updated PHP 5.0.4), the following changes exist. Built in:
+ DOM, LibXML, Iconv, SimpleXML, SPL and SQLite. And the following are no
+ longer built in: MySQL and Overload.
+
+ The default location PHP searches for extensions is C:\php5 in PHP 5.
+ To change this setting to reflect your setup of PHP edit your php.ini
+ file:
+
+ * You will need to change the extension_dir setting to point to the
+ directory where your extensions lives, or where you have placed
+ your php_*.dll files. For example:
+
+extension_dir = C:\php\extensions
+
+ * Enable the extension(s) in php.ini you want to use by uncommenting
+ the extension=php_*.dll lines in php.ini. This is done by deleting
+ the leading ; from the extension you want to load.
+
+ Example 2-8. Enable Bzip2 extension for PHP-Windows
+// change the following line from ...
+;extension=php_bz2.dll
+
+// ... to
+extension=php_bz2.dll
+
+ * Some of the extensions need extra DLLs to work. Couple of them can
+ be found in the distribution package, in in the main folder in PHP 5,
+ but some, for example Oracle (php_oci8.dll) require DLLs which are
+ not bundled with the distribution package.
+ * Some of these DLLs are not bundled with the PHP distribution. See
+ each extensions documentation page for details. Also, read the
+ manual section titled Installation of PECL extensions for details
+ on PECL. An increasingly large number of PHP extensions are found
+ in PECL, and these extensions require a separate download.
+
+ Note: If you are running a server module version of PHP remember to
+ restart your web server to reflect your changes to php.ini.
+
+ The following table describes some of the extensions available and
+ required additional dlls.
+
+ Table 2-1. PHP Extensions
+ Extension Description Notes
+ php_bz2.dll bzip2 compression functions None
+ php_calendar.dll Calendar conversion functions
+ php_cpdf.dll ClibPDF functions None
+ php_crack.dll Crack functions None
+ php_ctype.dll ctype family functions
+ php_curl.dll CURL, Client URL library functions Requires: libeay32.dll,
+ ssleay32.dll (bundled)
+ php_db.dll DBM functions Deprecated. Use DBA instead (php_dba.dll)
+ php_dba.dll DBA: DataBase (dbm-style) Abstraction layer functions None
+ php_dbase.dll dBase functions None
+ php_dbx.dll dbx functions
+ php_exif.dll EXIF functions php_mbstring.dll. And, php_exif.dll must be
+ loaded after php_mbstring.dll in php.ini.
+ php_fdf.dll FDF: Forms Data Format functions. Requires: fdftk.dll
+ (bundled)
+ php_filepro.dll filePro functions Read-only access
+ php_ftp.dll FTP functions
+ php_gd2.dll GD library image functions GD2
+ php_gettext.dll Gettext functions, requires libintl-1.dll,
+ iconv.dll (bundled).
+ php_iconv.dll ICONV characterset conversion Requires: iconv.dll
+ php_imap.dll IMAP POP3 and NNTP functions None
+ php_interbase.dll InterBase functions Requires: gds32.dll (bundled)
+ php_ldap.dll LDAP functions requires libeay32.dll, ssleay32.dll (bundled)
+ php_mbstring.dll Multi-Byte String functions None
+ php_mcrypt.dll Mcrypt Encryption functions Requires: libmcrypt.dll
+ php_mime_magic.dll Mimetype functions Requires: magic.mime (bundled)
+ php_ming.dll Ming functions for Flash None
+ php_msql.dll mSQL functions Requires: msql.dll (bundled)
+ php_mssql.dll MSSQL functions Requires: ntwdblib.dll (bundled)
+ php_mysql.dll MySQL functions PHP >= 5.0.0, requires libmysql.dll
+ (bundled)
+ php_mysqli.dll MySQLi functions PHP >= 5.0.0, requires libmysql.dll
+ (libmysqli.dll in PHP <= 5.0.2) (bundled)
+ php_oci8.dll Oracle 8 functions Requires: Oracle 8.1+ client libraries
+ php_openssl.dll OpenSSL functions Requires: libeay32.dll (bundled)
+ php_oracle.dll Oracle functions Requires: Oracle 7 client libraries
+ php_pgsql.dll PostgreSQL functions None
+ php_printer.dll Printer functions None
+ php_shmop.dll Shared Memory functions None
+ php_snmp.dll SNMP get and walk functions NT only!
+ php_soap.dll SOAP functions PHP >= 5.0.0
+ php_sockets.dll Socket functions None
+ php_sybase_ct.dll Sybase functions Requires: Sybase client libraries
+ php_tidy.dll Tidy functions PHP >= 5.0.0
+ php_tokenizer.dll Tokenizer functions Built in since PHP 4.3.0
+ php_xmlrpc.dll XML-RPC functions PHP >= 4.2.1 requires: iconv.dll
+ (bundled)
+ php_xslt.dll XSLT requires libxslt.dll, iconv.dll (bundled).
+ php_zip.dll Zip File functions
+ php_zlib.dll ZLib compression functions
+ __________________________________________________________________
+
+Chapter 3. Installation of PECL extensions
+
+Introduction to PECL Installations
+
+ PECL is a repository of PHP extensions that are made available to you
+ via the PEAR packaging system. This section of the manual is intended
+ to demonstrate how to obtain and install PECL extensions.
+
+ These instructions assume /your/phpsrcdir/ is the path to the PHP
+ source distribution, and that extname is the name of the PECL
+ extension. Adjust accordingly. These instructions also assume a
+ familiarity with the pear command. The information in the PEAR manual
+ for the pear command also applies to the pecl command.
+
+ To be useful, a shared extension must be built, installed, and loaded.
+ The methods described below provide you with various instructions on
+ how to build and install the extensions, but they do not automatically
+ load them. Extensions can be loaded by adding an extension directive.
+ To this php.ini file, or through the use of the dl() function.
+
+ When building PHP modules, it's important to have known-good versions
+ of the required tools (autoconf, automake, libtool, etc.) See the
+ SVN Instructions for details on the required tools, and required
+ versions.
+ __________________________________________________________________
+
+Downloading PECL extensions
+
+ There are several options for downloading PECL extensions, such as:
+
+ * http://pecl.php.net
+ The PECL web site contains information about the different
+ extensions that are offered by the PHP Development Team. The
+ information available here includes: ChangeLog, release notes,
+ requirements and other similar details.
+ * pecl download extname
+ PECL extensions that have releases listed on the PECL web site are
+ available for download and installation using the pecl command.
+ Specific revisions may also be specified.
+ * SVN
+ Most PECL extensions also reside in SVN. A web-based view may be
+ seen at http://svn.php.net/pecl/. To download straight from SVN,
+ the following sequence of commands may be used.
+
+$ svn co http://svn.php.net/repository/pecl/<extname>/trunk
+
+ * Windows downloads
+ Windows users may find compiled PECL binaries by downloading the
+ Collection of PECL modules from the PHP Downloads page, or by
+ retrieving a PECL Snapshot or an extension DLL on PECL4WIN. To
+ compile PHP under Windows, read the appropriate chapter.
+ __________________________________________________________________
+
+PECL for Windows users
+
+ As with any other PHP extension DLL, installation is as simple as
+ copying the PECL extension DLLs into the extension_dir folder and
+ loading them from php.ini. For example, add the following line to your
+ php.ini:
+
+ extension=php_extname.dll
+
+ After doing this, restart the web server.
+ __________________________________________________________________
+
+Compiling shared PECL extensions with the pecl command
+
+ PECL makes it easy to create shared PHP extensions. Using the pecl
+ command, do the following:
+
+ $ pecl install extname
+
+ This will download the source for extname, compile, and install
+ extname.so into your extension_dir. extname.so may then be loaded via
+ php.ini
+
+ By default, the pecl command will not install packages that are marked
+ with the alpha or beta state. If no stable packages are available, you
+ may install a beta package using the following command:
+
+ $ pecl install extname-beta
+
+ You may also install a specific version using this variant:
+
+ $ pecl install extname-0.1
+ __________________________________________________________________
+
+Compiling shared PECL extensions with phpize
+
+ Sometimes, using the pecl installer is not an option. This could be
+ because you're behind a firewall, or it could be because the extension
+ you want to install is not available as a PECL compatible package, such
+ as unreleased extensions from SVN. If you need to build such an
+ extension, you can use the lower-level build tools to perform the build
+ manually.
+
+ The phpize command is used to prepare the build environment for a PHP
+ extension. In the following sample, the sources for an extension are in
+ a directory named extname:
+
+$ cd extname
+$ phpize
+$ ./configure
+$ make
+# make install
+
+ A successful install will have created extname.so and put it into the
+ PHP extensions directory. You'll need to and adjust php.ini and add an
+ extension=extname.so line before you can use the extension.
+
+ If the system is missing the phpize command, and precompiled packages
+ (like RPM's) are used, be sure to also install the appropriate devel
+ version of the PHP package as they often include the phpize command
+ along with the appropriate header files to build PHP and its
+ extensions.
+
+ Execute phpize --help to display additional usage information.
+ __________________________________________________________________
+
+Compiling PECL extensions statically into PHP
+
+ You might find that you need to build a PECL extension statically into
+ your PHP binary. To do this, you'll need to place the extension source
+ under the php-src/ext/ directory and tell the PHP build system to
+ regenerate its configure script.
+
+$ cd /your/phpsrcdir/ext
+$ pecl download extname
+$ gzip -d < extname.tgz | tar -xvf -
+$ mv extname-x.x.x extname
+
+ This will result in the following directory:
+
+ /your/phpsrcdir/ext/extname
+
+ From here, force PHP to rebuild the configure script, and then build
+ PHP as normal:
+
+$ cd /your/phpsrcdir
+$ rm configure
+$ ./buildconf --force
+$ ./configure --help
+$ ./configure --with-extname --enable-someotherext --with-foobar
+$ make
+$ make install
+
+ Note: To run the 'buildconf' script you need autoconf 2.13 and
+ automake 1.4+ (newer versions of autoconf may work, but are not
+ supported).
+
+ Whether --enable-extname or --with-extname is used depends on the
+ extension. Typically an extension that does not require external
+ libraries uses --enable. To be sure, run the following after buildconf:
+
+ $ ./configure --help | grep extname
+ __________________________________________________________________
+
+Chapter 4. Problems?
+
+Read the FAQ
+
+ Some problems are more common than others. The most common ones are
+ listed in the PHP FAQ, part of this manual.
+ __________________________________________________________________
+
+Other problems
+
+ If you are still stuck, someone on the PHP installation mailing list
+ may be able to help you. You should check out the archive first, in
+ case someone already answered someone else who had the same problem as
+ you. The archives are available from the support page on
+ http://www.php.net/support.php. To subscribe to the PHP installation
+ mailing list, send an empty mail to
+ php-install-subscribe@lists.php.net. The mailing list address is
+ php-install@lists.php.net.
+
+ If you want to get help on the mailing list, please try to be precise
+ and give the necessary details about your environment (which operating
+ system, what PHP version, what web server, if you are running PHP as
+ CGI or a server module, safe mode, etc...), and preferably enough code
+ to make others able to reproduce and test your problem.
+ __________________________________________________________________
+
+Bug reports
+
+ If you think you have found a bug in PHP, please report it. The PHP
+ developers probably don't know about it, and unless you report it,
+ chances are it won't be fixed. You can report bugs using the
+ bug-tracking system at http://bugs.php.net/. Please do not send bug
+ reports in mailing list or personal letters. The bug system is also
+ suitable to submit feature requests.
+
+ Read the How to report a bug document before submitting any bug
+ reports!
+ __________________________________________________________________
+
+Chapter 5. Runtime Configuration
+
+The configuration file
+
+ The configuration file (called php3.ini in PHP 3, and simply php.ini as
+ of PHP 4) is read when PHP starts up. For the server module versions of
+ PHP, this happens only once when the web server is started. For the CGI
+ and CLI version, it happens on every invocation.
+
+ php.ini is searched in these locations (in order):
+
+ * SAPI module specific location (PHPIniDir directive in Apache 2, -c
+ command line option in CGI and CLI, php_ini parameter in NSAPI,
+ PHP_INI_PATH environment variable in THTTPD)
+ * The PHPRC environment variable. Before PHP 5.2.0 this was checked
+ after the registry key mentioned below.
+ * As of PHP 5.2.0, the following registry locations are searched in
+ order: HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z\IniFilePath,
+ HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y\IniFilePath and
+ HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x\IniFilePath, where x, y and z
+ mean the PHP major, minor and release versions.
+ * HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath (Windows Registry
+ location)
+ * Current working directory (except CLI)
+ * The web server's directory (for SAPI modules), or directory of PHP
+ (otherwise in Windows)
+ * Windows directory (C:\windows or C:\winnt) (for Windows), or
+ --with-config-file-path compile time option
+
+ If php-SAPI.ini exists (where SAPI is used SAPI, so the filename is
+ e.g. php-cli.ini or php-apache.ini), it's used instead of php.ini. SAPI
+ name can be determined by php_sapi_name().
+
+ Note: The Apache web server changes the directory to root at startup
+ causing PHP to attempt to read php.ini from the root filesystem if
+ it exists.
+
+ The php.ini directives handled by extensions are documented
+ respectively on the pages of the extensions themselves. The list of the
+ core directives is available in the appendix. Probably not all PHP
+ directives are documented in the manual though. For a complete list of
+ directives available in your PHP version, please read your well
+ commented php.ini file. Alternatively, you may find the latest
+ php.ini from SVN helpful too.
+
+ Example 5-1. php.ini example
+; any text on a line after an unquoted semicolon (;) is ignored
+[php] ; section markers (text within square brackets) are also ignored
+; Boolean values can be set to either:
+; true, on, yes
+; or false, off, no, none
+html_errors = off
+track_errors = yes
+
+; you can enclose strings in double-quotes
+include_path = ".:/usr/local/lib/php"
+
+; backslashes are treated the same as any other character
+include_path = ".;c:\php\lib"
+
+ Since PHP 5.1.0, it is possible to refer to existing .ini variables
+ from within .ini files. Example: open_basedir = ${open_basedir}
+ ":/new/dir".
+ __________________________________________________________________
+
+How to change configuration settings
+
+Running PHP as an Apache module
+
+ When using PHP as an Apache module, you can also change the
+ configuration settings using directives in Apache configuration files
+ (e.g. httpd.conf) and .htaccess files. You will need "AllowOverride
+ Options" or "AllowOverride All" privileges to do so.
+
+ With PHP 4 and PHP 5, there are several Apache directives that allow
+ you to change the PHP configuration from within the Apache
+ configuration files. For a listing of which directives are PHP_INI_ALL,
+ PHP_INI_PERDIR, or PHP_INI_SYSTEM, have a look at the List of php.ini
+ directives appendix.
+
+ Note: With PHP 3, there are Apache directives that correspond to
+ each configuration setting in the php3.ini name, except the name is
+ prefixed by "php3_".
+
+ php_value name value
+ Sets the value of the specified directive. Can be used only with
+ PHP_INI_ALL and PHP_INI_PERDIR type directives. To clear a
+ previously set value use none as the value.
+
+ Note: Don't use php_value to set boolean values. php_flag (see
+ below) should be used instead.
+
+ php_flag name on|off
+ Used to set a boolean configuration directive. Can be used only
+ with PHP_INI_ALL and PHP_INI_PERDIR type directives.
+
+ php_admin_value name value
+ Sets the value of the specified directive. This can not be used
+ in .htaccess files. Any directive type set with php_admin_value
+ can not be overridden by .htaccess or virtualhost directives. To
+ clear a previously set value use none as the value.
+
+ php_admin_flag name on|off
+ Used to set a boolean configuration directive. This can not be
+ used in .htaccess files. Any directive type set with
+ php_admin_flag can not be overridden by .htaccess or virtualhost
+ directives.
+
+ Example 5-2. Apache configuration example
+<IfModule mod_php5.c>
+ php_value include_path ".:/usr/local/lib/php"
+ php_admin_flag engine on
+</IfModule>
+
+ Caution
+
+ PHP constants do not exist outside of PHP. For example, in httpd.conf
+ you can not use PHP constants such as E_ALL or E_NOTICE to set the
+ error_reporting directive as they will have no meaning and will
+ evaluate to 0. Use the associated bitmask values instead. These
+ constants can be used in php.ini
+ __________________________________________________________________
+
+Changing PHP configuration via the Windows registry
+
+ When running PHP on Windows, the configuration values can be modified
+ on a per-directory basis using the Windows registry. The configuration
+ values are stored in the registry key HKLM\SOFTWARE\PHP\Per Directory
+ Values, in the sub-keys corresponding to the path names. For example,
+ configuration values for the directory c:\inetpub\wwwroot would be
+ stored in the key HKLM\SOFTWARE\PHP\Per Directory
+ Values\c\inetpub\wwwroot. The settings for the directory would be
+ active for any script running from this directory or any subdirectory
+ of it. The values under the key should have the name of the PHP
+ configuration directive and the string value. PHP constants in the
+ values are not parsed. However, only configuration values changeable in
+ PHP_INI_USER can be set this way, PHP_INI_PERDIR values can not.
+ __________________________________________________________________
+
+Other interfaces to PHP
+
+ Regardless of how you run PHP, you can change certain values at runtime
+ of your scripts through ini_set(). See the documentation on the
+ ini_set() page for more information.
+
+ If you are interested in a complete list of configuration settings on
+ your system with their current values, you can execute the phpinfo()
+ function, and review the resulting page. You can also access the values
+ of individual configuration directives at runtime using ini_get() or
+ get_cfg_var().
+ __________________________________________________________________
+
+Chapter 6. Installation FAQ
+
+ This section holds common questions about the way to install PHP. PHP
+ is available for almost any OS (except maybe for MacOS before OSX), and
+ almost any web server.
+
+ To install PHP, follow the instructions in Installing PHP.
+
+ 1. Why shouldn't I use Apache2 with a threaded MPM in a production
+ environment?
+
+ 2. Unix/Windows: Where should my php.ini file be located?
+ 3. Unix: I installed PHP, but every time I load a document, I get the
+ message 'Document Contains No Data'! What's going on here?
+
+ 4. Unix: I installed PHP using RPMS, but Apache isn't processing the
+ PHP pages! What's going on here?
+
+ 5. Unix: I installed PHP 3 using RPMS, but it doesn't compile with the
+ database support I need! What's going on here?
+
+ 6. Unix: I patched Apache with the FrontPage extensions patch, and
+ suddenly PHP stopped working. Is PHP incompatible with the
+ Apache FrontPage extensions?
+
+ 7. Unix/Windows: I have installed PHP, but when I try to access a PHP
+ script file via my browser, I get a blank screen.
+
+ 8. Unix/Windows: I have installed PHP, but when try to access a PHP
+ script file via my browser, I get a server 500 error.
+
+ 9. Some operating systems: I have installed PHP without errors, but
+ when I try to start apache I get undefined symbol errors:
+
+[mybox:user /src/php5] root# apachectl configtest
+ apachectl: /usr/local/apache/bin/httpd Undefined symbols:
+ _compress
+ _uncompress
+
+ 10. Windows: I have installed PHP, but when I to access a PHP script
+ file via my browser, I get the error:
+
+cgi error:
+ The specified CGI application misbehaved by not
+ returning a complete set of HTTP headers.
+ The headers it did return are:
+
+ 11. Windows: I've followed all the instructions, but still can't get
+ PHP and IIS to work together!
+
+ 12. When running PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get
+ the following error: Security Alert! PHP CGI cannot be accessed
+ directly..
+
+ 13. How do I know if my php.ini is being found and read? It seems like
+ it isn't as my changes aren't being implemented.
+
+ 14. How do I add my PHP directory to the PATH on Windows?
+ 15. How do I make the php.ini file available to PHP on windows?
+ 16. Is it possible to use Apache content negotiation (MultiViews
+ option) with PHP?
+
+ 17. Is PHP limited to process GET and POST request methods only?
+
+ 1. Why shouldn't I use Apache2 with a threaded MPM in a production
+ environment?
+
+ PHP is glue. It is the glue used to build cool web applications by
+ sticking dozens of 3rd-party libraries together and making it all
+ appear as one coherent entity through an intuitive and easy to learn
+ language interface. The flexibility and power of PHP relies on the
+ stability and robustness of the underlying platform. It needs a working
+ OS, a working web server and working 3rd-party libraries to glue
+ together. When any of these stop working PHP needs ways to identify the
+ problems and fix them quickly. When you make the underlying framework
+ more complex by not having completely separate execution threads,
+ completely separate memory segments and a strong sandbox for each
+ request to play in, feet of clay are introduced into PHP's system.
+
+ If you feel you have to use a threaded MPM, look at a FastCGI
+ configuration where PHP is running in its own memory space.
+
+ And finally, this warning against using a threaded MPM is not as strong
+ for Windows systems because most libraries on that platform tend to be
+ threadsafe.
+
+ 2. Unix/Windows: Where should my php.ini file be located?
+
+ By default on Unix it should be in /usr/local/lib which is
+ <install-path>/lib. Most people will want to change this at
+ compile-time with the --with-config-file-path flag. You would, for
+ example, set it with something like:
+ --with-config-file-path=/etc
+
+ And then you would copy php.ini-production from the distribution to
+ /etc/php.ini and edit it to make any local changes you want.
+ --with-config-file-scan-dir=PATH
+
+ On Windows the default path for the php.ini file is the Windows
+ directory. If you're using the Apache webserver, php.ini is first
+ searched in the Apaches install directory, e.g. c:\program files\apache
+ group\apache. This way you can have different php.ini files for
+ different versions of Apache on the same machine.
+
+ See also the chapter about the configuration file.
+
+ 3. Unix: I installed PHP, but every time I load a document, I get the
+ message 'Document Contains No Data'! What's going on here?
+
+ This probably means that PHP is having some sort of problem and is
+ core-dumping. Look in your server error log to see if this is the case,
+ and then try to reproduce the problem with a small test case. If you
+ know how to use 'gdb', it is very helpful when you can provide a
+ backtrace with your bug report to help the developers pinpoint the
+ problem. If you are using PHP as an Apache module try something like:
+
+ * Stop your httpd processes
+ * gdb httpd
+ * Stop your httpd processes
+ * > run -X -f /path/to/httpd.conf
+ * Then fetch the URL causing the problem with your browser
+ * > run -X -f /path/to/httpd.conf
+ * If you are getting a core dump, gdb should inform you of this now
+ * type: bt
+ * You should include your backtrace in your bug report. This should
+ be submitted to http://bugs.php.net/
+
+ If your script uses the regular expression functions (ereg() and
+ friends), you should make sure that you compiled PHP and Apache with
+ the same regular expression package. This should happen automatically
+ with PHP and Apache 1.3.x
+
+ 4. Unix: I installed PHP using RPMS, but Apache isn't processing the
+ PHP pages! What's going on here?
+
+ Assuming you installed both Apache and PHP from RPM packages, you need
+ to uncomment or add some or all of the following lines in your
+ httpd.conf file:
+# Extra Modules
+AddModule mod_php.c
+AddModule mod_php3.c
+AddModule mod_perl.c
+
+# Extra Modules
+LoadModule php_module modules/mod_php.so
+LoadModule perl_module modules/libperl.so
+
+ And add:
+AddType application/x-httpd-php3 .php3 # for PHP 3
+AddType application/x-httpd-php .php # for PHP 4
+
+ ... to the global properties, or to the properties of the VirtualDomain
+ you want to have PHP support added to.
+
+ 5. Unix: I installed PHP 3 using RPMS, but it doesn't compile with the
+ database support I need! What's going on here?
+
+ Due to the way PHP 3 built, it is not easy to build a complete flexible
+ PHP RPM. This issue is addressed in PHP 4. For PHP 3, we currently
+ suggest you use the mechanism described in the INSTALL.REDHAT file in
+ the PHP distribution. If you insist on using an RPM version of PHP 3,
+ read on...
+
+ The RPM packagers are setting up the RPMS to install without database
+ support to simplify installations and because RPMS use /usr/ instead of
+ the standard /usr/local/ directory for files. You need to tell the RPM
+ spec file which databases to support and the location of the top-level
+ of your database server.
+
+ This example will explain the process of adding support for the popular
+ MySQL database server, using the mod installation for Apache.
+
+ Of course all of this information can be adjusted for any database
+ server that PHP supports. We will assume you installed MySQL and Apache
+ completely with RPMS for this example as well.
+
+ * First remove mod_php3 :
+
+rpm -e mod_php3
+
+ * Then get the source rpm and INSTALL it, NOT --rebuild
+
+rpm -Uvh mod_php3-3.0.5-2.src.rpm
+
+ * Then edit the /usr/src/redhat/SPECS/mod_php3.spec file
+ In the %build section add the database support you want, and the
+ path.
+ For MySQL you would add --with-mysql=/usr The %build section will
+ look something like this:
+
+./configure --prefix=/usr \
+--with-apxs=/usr/sbin/apxs \
+--with-config-file-path=/usr/lib \
+--enable-debug=no \
+--enable-safe-mode \
+--with-exec-dir=/usr/bin \
+--with-mysql=/usr \
+--with-system-regex
+
+ * Once this modification is made then build the binary rpm as
+ follows:
+
+rpm -bb /usr/src/redhat/SPECS/mod_php3.spec
+
+ * Then install the rpm
+
+rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm
+
+ Make sure you restart Apache, and you now have PHP 3 with MySQL support
+ using RPM's. Note that it is probably much easier to just build from
+ the distribution tarball of PHP 3 and follow the instructions in
+ INSTALL.REDHAT found in that distribution.
+
+ 6. Unix: I patched Apache with the FrontPage extensions patch, and
+ suddenly PHP stopped working. Is PHP incompatible with the Apache
+ FrontPage extensions?
+
+ No, PHP works fine with the FrontPage extensions. The problem is that
+ the FrontPage patch modifies several Apache structures, that PHP relies
+ on. Recompiling PHP (using 'make clean ; make') after the FP patch is
+ applied would solve the problem.
+
+ 7. Unix/Windows: I have installed PHP, but when I try to access a PHP
+ script file via my browser, I get a blank screen.
+
+ Do a 'view source' in the web browser and you will probably find that
+ you can see the source code of your PHP script. This means that the web
+ server did not send the script to PHP for interpretation. Something is
+ wrong with the server configuration - double check the server
+ configuration against the PHP installation instructions.
+
+ 8. Unix/Windows: I have installed PHP, but when try to access a PHP
+ script file via my browser, I get a server 500 error.
+
+ Something went wrong when the server tried to run PHP. To get to see a
+ sensible error message, from the command line, change to the directory
+ containing the PHP executable (php.exe on Windows) and run php -i. If
+ PHP has any problems running, then a suitable error message will be
+ displayed which will give you a clue as to what needs to be done next.
+ If you get a screen full of HTML codes (the output of the phpinfo()
+ function) then PHP is working, and your problem may be related to your
+ server configuration which you should double check.
+
+ 9. Some operating systems: I have installed PHP without errors, but
+ when I try to start apache I get undefined symbol errors:
+[mybox:user /src/php5] root# apachectl configtest
+ apachectl: /usr/local/apache/bin/httpd Undefined symbols:
+ _compress
+ _uncompress
+
+ This has actually nothing to do with PHP, but with the MySQL client
+ libraries. Some need --with-zlib, others do not. This is also covered
+ in the MySQL FAQ.
+
+ 10. Windows: I have installed PHP, but when I to access a PHP script
+ file via my browser, I get the error:
+cgi error:
+ The specified CGI application misbehaved by not
+ returning a complete set of HTTP headers.
+ The headers it did return are:
+
+ This error message means that PHP failed to output anything at all. To
+ get to see a sensible error message, from the command line, change to
+ the directory containing the PHP executable (php.exe on Windows) and
+ run php -i. If PHP has any problems running, then a suitable error
+ message will be displayed which will give you a clue as to what needs
+ to be done next. If you get a screen full of HTML codes (the output of
+ the phpinfo() function) then PHP is working.
+
+ Once PHP is working at the command line, try accessing the script via
+ the browser again. If it still fails then it could be one of the
+ following:
+
+ * File permissions on your PHP script, php.exe, php5ts.dll, php.ini
+ or any PHP extensions you are trying to load are such that the
+ anonymous internet user ISUR_<machinename> cannot access them.
+ * The script file does not exist (or possibly isn't where you think
+ it is relative to your web root directory). Note that for IIS you
+ can trap this error by ticking the 'check file exists' box when
+ setting up the script mappings in the Internet Services Manager. If
+ a script file does not exist then the server will return a 404
+ error instead. There is also the additional benefit that IIS will
+ do any authentication required for you based on the NTLanMan
+ permissions on your script file.
+
+ 11. Windows: I've followed all the instructions, but still can't get
+ PHP and IIS to work together!
+
+ Make sure any user who needs to run a PHP script has the rights to run
+ php.exe! IIS uses an anonymous user which is added at the time IIS is
+ installed. This user needs rights to php.exe. Also, any authenticated
+ user will also need rights to execute php.exe. And for IIS4 you need to
+ tell it that PHP is a script engine. Also, you will want to read this
+ faq.
+
+ 12. When running PHP as CGI with IIS, PWS, OmniHTTPD or Xitami, I get
+ the following error: Security Alert! PHP CGI cannot be accessed
+ directly..
+
+ You must set the cgi.force_redirect directive to 0. It defaults to 1 so
+ be sure the directive isn't commented out (with a ;). Like all
+ directives, this is set in php.ini
+
+ Because the default is 1, it's critical that you're 100% sure that the
+ correct php.ini file is being read. Read this faq for details.
+
+ 13. How do I know if my php.ini is being found and read? It seems like
+ it isn't as my changes aren't being implemented.
+
+ To be sure your php.ini is being read by PHP, make a call to phpinfo()
+ and near the top will be a listing called Configuration File (php.ini).
+ This will tell you where PHP is looking for php.ini and whether or not
+ it's being read. If just a directory PATH exists than it's not being
+ read and you should put your php.ini in that directory. If php.ini is
+ included within the PATH than it is being read.
+
+ If php.ini is being read and you're running PHP as a module, then be
+ sure to restart your web server after making changes to php.ini
+
+ 14. How do I add my PHP directory to the PATH on Windows?
+
+ On Windows NT, 2000, XP and 2003:
+
+ * Go to Control Panel and open the System icon (Start -> Settings ->
+ Control Panel -> System, or just Start -> Control Panel -> System
+ for Windows XP/2003)
+ * Go to the Advanced tab
+ * Click on the 'Environment Variables' button
+ * Look into the 'System Variables' pane
+ * Find the Path entry (you may need to scroll to find it)
+ * Double click on the Path entry
+ * Enter your PHP directory at the end, including ';' before (e.g.
+ ;C:\php)
+ * Press OK and restart your computer
+
+ On Windows 98/Me you need to edit the autoexec.bat file:
+
+ * Open the Notepad (Start -> Run and enter notepad)
+ * Open the C:\autoexec.bat file
+ * Locate the line with PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... and
+ add: ;C:\php to the end of the line
+ * Save the file and restart your computer
+
+ Note: Be sure to reboot after following the steps above to ensure
+ that the PATH changes are applied.
+
+ The PHP manual used to promote the copying of files into the Windows
+ system directory, this is because this directory (C:\Windows, C:\WINNT,
+ etc.) is by default in the systems PATH. Copying files into the Windows
+ system directory has long since been deprecated and may cause problems.
+
+ 15. How do I make the php.ini file available to PHP on windows?
+
+ There are several ways of doing this. If you are using Apache, read
+ their installation specific instructions (Apache 1, Apache 2),
+ otherwise you must set the PHPRC environment variable:
+
+ On Windows NT, 2000, XP and 2003:
+
+ * Go to Control Panel and open the System icon (Start -> Settings ->
+ Control Panel -> System, or just Start -> Control Panel -> System
+ for Windows XP/2003)
+ * Go to the Advanced tab
+ * Click on the 'Environment Variables' button
+ * Look into the 'System variables' pane
+ * Click on 'New' and enter 'PHPRC' as the variable name and the
+ directory where php.ini is located as the variable value (e.g.
+ C:\php)
+ * Press OK and restart your computer
+
+ On Windows 98/Me you need to edit the autoexec.bat file:
+
+ * Open the Notepad (Start -> Run and enter notepad)
+ * Open the C:\autoexec.bat file
+ * Add a new line to the end of the file: set PHPRC=C:\php (replace
+ C:\php with the directory where php.ini is located). Please note
+ that the path cannot contain spaces. For instance, if you have
+ installed PHP in C:\Program Files\PHP, you would enter
+ C:\PROGRA~1\PHP instead.
+ * Save the file and restart your computer
+
+ 16. Is it possible to use Apache content negotiation (MultiViews
+ option) with PHP?
+
+ If links to PHP files include extension, everything works perfect. This
+ FAQ is only for the case when links to PHP files don't include
+ extension and you want to use content negotiation to choose PHP files
+ from URL with no extension. In this case, replace the line AddType
+ application/x-httpd-php .php with:
+# PHP 4
+AddHandler php-script php
+AddType text/html php
+
+# PHP 5
+AddHandler php5-script php
+AddType text/html php
+
+ This solution doesn't work for Apache 1 as PHP module doesn't catch
+ php-script.
+
+ 17. Is PHP limited to process GET and POST request methods only?
+
+ No, it is possible to handle any request method, e.g. CONNECT. Proper
+ response status can be sent with header(). If only GET and POST methods
+ should be handled, it can be achieved with this Apache configuration:
+<LimitExcept GET POST>
+Deny from all
+</LimitExcept>