 |
Installation on Windows systems
This section applies to Windows 98/Me and Windows NT/2000/XP. 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 InstallShield
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.
Windows InstallShield
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, configures the web server as well.
Note:
While the InstallShield installer is an easy way to make
PHP work, it is restricted in many aspects, as
automatic setup of extensions for example is not supported. The whole set
of supported extensions is only available by downloading the zip binary
distribution.
Install your selected HTTP 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 the web server to use PHP. For IIS and also PWS on NT
Workstation, a list of all the nodes on the server with script map settings
is displayed, and you can choose those nodes to which you wish to add the
PHP script mappings.
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 on your
Windows webserver. The original version of this guide was compiled by
Bob Silva, and can be found at
http://www.umesd.k12.or.us/php/win32install.html.
You need to download the zip binary distribution from the downloads page at
http://www.php.net/downloads.php.
PHP 4 for Windows comes in three flavours - a CGI executable (php.exe), a
CLI executable (sapi/php.exe) and some other SAPI modules:
php4apache.dll - Apache 1.3.x module
|
php4apache2.dll - Apache 2.0.x module
|
php4isapi.dll - ISAPI Module for ISAPI compliant
webservers like IIS 4.0/PWS 4.0 or newer.
|
php4nsapi.dll - Netscape/iPlanet module
|
The latter form is new to PHP 4, and provides significantly improved
performance and some new functionality. The CLI version is designed to 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 in the 4.1 release,
however, you may find that you encounter possible server errors or
other server modules such as ASP failing, in older systems.
|
DCOM and MDAC requirements:
If you choose one of the SAPI modules and use
Windows 95, be sure to download and install the DCOM
update from the Microsoft DCOM pages.
If you use Microsoft Windows 9x/NT4 download the
latest version of the Microsoft Data Access Components (MDAC) for your
platform. MDAC is available at http://msdn.microsoft.com/data/.
The following steps should be performed on all installations before any
server specific instructions.
Extract the distribution file to a directory of your choice,
c:\ is a good start. The zip package expands to a
foldername like php-4.3.1-Win32 which is assumed to
be renamed to php. For the sake of convenience and
to be version independent the following steps assume your extracted
version of PHP lives in c:\php. You might choose
any other location but you probably do not want to use a path in which
spaces are included (for example:
C:\Program Files\PHP is not a good idea). Some web
servers will crash if you do. The structure of your directory you
extracted the zip file will look like:
The CGI binary - c:\php\php.exe -, the CLI binary
- c:\php\cli\php.exe -, and the SAPI modules
- c:\php\sapi\*.dll - rely on the main dll
c:\php\php4ts.dll. You have to make sure, that this
dll 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.
In case you use a SAPI module the same directory from where your
webserver loads the dll (e.g. php4apache.dll).
|
Any directory in your Windows PATH environment variable.
|
The best bet is to make php4ts.dll available,
regardless which interface (CGI or SAPI module) you plan to use. To do so,
you have to copy this dll to a directory on your Windows path. The best
place is your Windows system directory:
C:\Windows\System for Windows 9x/ME
|
C:\WINNT\System32 for Windows NT/2000 or
C:\WINNT40\System32 for NT/2000 server
|
C:\Windows\System32 for Windows XP
|
If you plan to use a SAPI module from c:\php\sapi
and do not like to copy dlls to your Windows system directory, you have
the alternative choice to simply copy php4ts.dll to
the sapi folder of your extracted zip package,
c:\php\sapi.
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-dist and
php.ini-recommended. We advise you to use
php.ini-recommended, because we optimized the
default settings in this file for performance, and security. Read this
well documented file carefully and in addition 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 where
PHP is able to find and rename it to php.ini. By default PHP searches
php.ini in your Windows directory:
On Windows 9x/ME/XP copy your chosen ini file to your
%WINDIR%, which is typically
C:\Windows.
|
On Windows NT/2000 copy your chosen ini file to your
%WINDIR% or %SYSTEMROOT%,
which is typically C:\WINNT or
C:\WINNT40 for NT/2000 servers.
|
If you're using NTFS on Windows NT, 2000 or XP, make sure that
the user running the webserver 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 webservers
document_root. For example:
Choose which 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.
Following this instructions you are done with the basic steps to setup PHP
on Windows. The next step is to choose a webserver and enable it to run
PHP. Installation instructions for the following webservers are available:
Building from source
Before getting started, it is worthwhile answering the question:
"Why is building on Windows so hard?" Two reasons come to mind:
Windows does not (yet) enjoy a large community of developers
who are willing to freely share their source. As a direct
result, the necessary investment in infrastructure required
to support such development hasn't been made. By and large,
what is available has been made possible by the porting of
necessary utilities from Unix. Don't be surprised if some of
this heritage shows through from time to time.
Pretty much all of the instructions that follow are of the
"set and forget" variety. So sit back and try follow the
instructions below as faithfully as you can.
Requirements
To compile and build PHP you need a Microsoft
Development Environment. Microsoft Visual C++ 6.0 is recommended.
To extract the downloaded files you need a extraction utility
(e.g.: Winzip). If you don't already have an unzip utility, you
can get a free version from InfoZip.
Before you get started, you have to download...
Finally, you are going to need the source to PHP 4 itself. You can get
the latest development version using
anonymous CVS, a
snapshot or the most recent released
source tarball.
Putting it all together
After downloading the required packages you have to extract them in a
proper place.
Create a working directory where all files end up after extracting, e.g:
C:\work.
Create the directory win32build under your
working directory (C:\work) and unzip
win32build.zip into it.
Create the directory bindlib_w32 under your
working directory (C:\work) and unzip
bindlib_w32.zip into it.
Extract the downloaded PHP source code into your working directory
(C:\work).
Following this steps your directory structure looks like this:
Create the directories c:\usr\local\lib. Copy
bison.simple from c:\work\win32build\bin
to c:\usr\local\lib.
Note:
Cygwin users may omit the last
step. A properly installed Cygwin environment provides the mandatory
files bison.simple and
bison.exe.
Configure MVC ++
The next step is to configure MVC ++ to prepare for compiling.
Launch Microsoft Visual C++, and from the menu select
Tools => Options. In the dialog, select the
directories tab. Sequentially change the dropdown
to Executables, Includes, and Library files. Your entries should look
like this:
Executable files: c:\work\win32build\bin,
Cygwin users: cygwin\bin
Include files: c:\work\win32build\include
Library files: c:\work\win32build\lib
Build resolv.lib
You must build the resolv.lib library.
Decide whether you want to have debug symbols available
(bindlib - Win32 Debug) or not (bindlib - Win32 Release).
Build the appropriate configuration:
For GUI users, launch VC++, and then select File => Open
Workspace, navigate to c:\work\bindlib_w32 and
select bindlib.dsw. Then select Build=>Set
Active Configuration and select the desired configuration.
Finally select Build=>Rebuild All.
For command line users, make sure that you either have the C++
environment variables registered, or have run
vcvars.bat, and then execute one of the following
commands:
At this point, you should have a usable resolv.lib
in either your c:\work\bindlib_w32\Debug or
Release subdirectories. Copy this file into your
c:\work\win32build\lib directory over the file
by the same name found in there.
Compiling
The best way to get started is to build the CGI version.
For GUI users, launch VC++, and then select File => Open
Workspace and select c:\work\php-4.x.x\win32\php4ts.dsw
. Then select Build=>Set Active
Configuration and select the desired configuration, either
php4ts - Win32 Debug_TS or
php4ts - Win32 Release_TS. Finally select
Build=>Rebuild All.
For command line users, make sure that you either have
the C++ environment variables registered, or have run
vcvars.bat, and then execute one of the
following commands from the c:\work\php-4.x.x\win32
directory:
msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"
msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"
At this point, you should have a usable php.exe
in either your c:\work\php-4.x.x.\Debug_TS or
Release_TS subdirectories.
It is possible to do minor customization to the build process by editing
the main/config.win32.h file. For example you can
change the default location of php.ini, the built-in extensions, and the
default location for your extensions.
Next you may want to build the CLI version which is designed to use
PHP from the command line.
The steps are the same as for building the CGI version, except you have
to select the php4ts_cli - Win32 Debug_TS or
php4ts_cli - Win32 Release_TS project file. After a
successful compiling run you will find the php.exe
in either the directory Release_TS\cli\ or
Debug_TS\cli\.
Note:
If you want to use PEAR and the comfortable command line installer,
the CLI-SAPI is mandatory. For more information about PEAR and the
installer read the documentation at the
PEAR website.
In order to build the SAPI module (php4isapi.dll)
for integrating PHP with Microsoft IIS, set your active configuration to
php4isapi-whatever-config and build the desired dll.
Installation of Windows extensions
After installing PHP and a webserver 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_' in PHP 4 (and
'php3_' in PHP 3). This prevents confusion between PHP extensions
and their supporting libraries.
Note:
In PHP 4.3.1 BCMath, Calendar, COM, Ctype, FTP, MySQL, ODBC, Overload,
PCRE, Session, Tokenizer, WDDX, XML and Zlib support is
built in. You don't need to load any additional
extensions in order to use these functions. See your distributions
README.txt or install.txt
or this table
for a list of built in modules.
The default location PHP searches for extensions is
c:\php4\extensions. 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. Please do not
forget the last backslash. For example:
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 ; form the extension you want to load.
Example 3-3. 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 the
c:\php\dlls\ folder but some, for example Oracle
(php_oci8.dll) require DLLs which are not bundled
with the distribution package. Copy the bundled DLLs from
c:\php\dlls folder to your Windows PATH, safe
places are:
c:\windows\system for Windows 9x/Me | c:\winnt\system32 for Windows NT/2000 | c:\windows\system32 for Windows XP |
If you have them already installed on your system, overwrite them only
if something doesn't work correctly (Before overwriting them, it is a
good idea to make a backup of them, or move them to another folder -
just in case something goes wrong).
Note:
If you are running a server module version of PHP
remember to restart your webserver to reflect your changes to php.ini.
The following table describes some of the extensions available and required
additional dlls.
Table 3-1. PHP Extensions Extension | Description | Notes |
---|
php_bz2.dll | bzip2 compression functions | None | php_calendar.dll | Calendar conversion functions | Built in since PHP 4.0.3 | php_cpdf.dll | ClibPDF functions | None | php_crack.dll | Crack functions | None | php3_crypt.dll | Crypt functions | unknown | php_ctype.dll | ctype family functions | Built in since PHP 4.3.0 | php_curl.dll | CURL, Client URL library functions | Requires: libeay32.dll,
ssleay32.dll (bundled) | php_cybercash.dll | Cybercash payment functions | PHP <= 4.2.0 | 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 | php3_dbm.dll | Berkeley DB2 library | unknown | php_dbx.dll | dbx functions | | php_domxml.dll | DOM XML functions |
PHP <= 4.2.0 requires: libxml2.dll (bundled)
PHP >= 4.3.0 requires: iconv.dll (bundled)
| php_dotnet.dll | .NET functions | PHP <= 4.1.1 | php_exif.dll | Read EXIF headers from JPEG | None | php_fbsql.dll | FrontBase functions | PHP <= 4.2.0 | 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 | Built-in since PHP 4.0.3 | php_gd.dll | GD library image functions |
Removed in PHP 4.3.2. Also note that truecolor functions are not
available in GD1, instead, use php_gd2.dll.
| php_gd2.dll | GD library image functions | GD2 | php_gettext.dll | Gettext functions |
PHP <= 4.2.0 requires gnu_gettext.dll (bundled),
PHP >= 4.2.3 requires libintl-1.dll,
iconv.dll (bundled).
| php_hyperwave.dll | HyperWave functions | None | php_iconv.dll | ICONV characterset conversion | Requires: iconv-1.3.dll (bundled),
PHP >=4.2.1 iconv.dll | php_ifx.dll | Informix functions | Requires: Informix libraries | php_iisfunc.dll | IIS management functions | None | php_imap.dll | IMAP POP3 and NNTP functions | PHP 3: php3_imap4r1.dll | php_ingres.dll | Ingres II functions | Requires: Ingres II libraries | php_interbase.dll | InterBase functions | Requires: gds32.dll (bundled) | php_java.dll | Java functions | PHP <= 4.0.6 requires: jvm.dll (bundled) | php_ldap.dll | LDAP functions |
PHP <= 4.2.0 requires libsasl.dll (bundled),
PHP >= 4.3.0 requires libeay32.dll,
ssleay32.dll (bundled)
| php_mbstring.dll | Multi-Byte String functions | None | php_mcrypt.dll | Mcrypt Encryption functions | Requires: libmcrypt.dll | php_mhash.dll | Mhash functions | PHP >= 4.3.0 requires: libmhash.dll (bundled) | 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) | php3_msql1.dll | mSQL 1 client | unknown | php3_msql2.dll | mSQL 2 client | unknown | php_mssql.dll | MSSQL functions | Requires: ntwdblib.dll (bundled) | php3_mysql.dll | MySQL functions | Built-in in PHP 4 | php3_nsmail.dll | Netscape mail functions | unknown | php3_oci73.dll | Oracle functions | unknown | 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_overload.dll | Object overloading functions | Built in since PHP 4.3.0 | php_pdf.dll | PDF functions | None | 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_sockets.dll | Socket functions | None | php_sybase_ct.dll | Sybase functions | Requires: Sybase client libraries | php_tokenizer.dll | Tokenizer functions | Built in since PHP 4.3.0 | php_w32api.dll | W32api functions | None | php_xmlrpc.dll | XML-RPC functions | PHP >= 4.2.1 requires: iconv.dll (bundled) | php_xslt.dll | XSLT functions |
PHP <= 4.2.0 requires sablot.dll,
expat.dll (bundled). PHP >= 4.2.1 requires
sablot.dll, expat.dll,
iconv.dll (bundled).
| php_yaz.dll | YAZ functions | Requires: yaz.dll (bundled) | php_zip.dll | Zip File functions | Read only access | php_zlib.dll | ZLib compression functions | Built in since PHP 4.3.0 |
|  |