Run php 4 and php 5.2.x on the same machine with IIS 6.0 as ISAPI.
- Extract the ZIP packages of both php 4 & php 5 (not the Windows Installer) to c:\php4 & c:\php5 respectively.
- Setup the corresponding php.ini files in c:\php4 and c:\php5
- Add the Web Service Extensions for php4 and php5. For php4 use c:\php4\sapi\php4isapi.dll, php5 use c:\php5\php5isapi.dll
- Add the following registry keys:
HKEY_LOCAL_MACHINE\SOFTWARE\PHP\5\IniFilePath -> c:\php5 HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath -> c:\php4
- Add c:\php4 to the PATH environment variable.
- Add c:\php5 to the PATH environment variable.
- Associate each web site in IIS with the corresponding php version.
- Reboot.
Note: In IIS you still need to to have the DLL’s in the “Allowed Web Service Extensions List” and the extensions in the appropriate “Application Configuration” settings for the given websites/applications.
More information on the php.ini file (taken from the install.txt in the distro):
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 optionIf 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 the latest
php.ini from CVS 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
register_globals = 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”.
Leave a comment:
