php-doc-en/chapters/install.sgml
James Gingerich efadd9b969 Document Apache directives for configuration in PHP4.
Make lots of little "php3.ini" -> "configuration file" changes, and make
sure they're all links to that section of the manual.


git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@11557 c90b9560-bf6c-de11-be94-00142212c4b1
1999-08-01 00:37:07 +00:00

1284 lines
41 KiB
Text

<chapter id="installation">
<title>Installation</title>
<sect1 id="downloading">
<title>Downloading the latest version</title>
<simpara>
The source code, and binary distributions for some platforms (including
Windows), can be found at
<literal><ulink
url="http://www.php.net/">http://www.php.net/</ulink></literal>.
</sect1>
<sect1 id="install-unix">
<title>Installation on UNIX systems</title>
<para>
This section will guide you through the configuration and
installation of PHP. Prerequisite knowledge and software:
<itemizedlist>
<listitem><simpara>Basic UNIX skills (being able to operate "make"
and a C compiler)</simpara></listitem>
<listitem><simpara>An ANSI C compiler</simpara></listitem>
<listitem><simpara>A web server</simpara></listitem>
</itemizedlist>
</para>
<sect2>
<title>Quick Installation Instructions (Apache Module Version)</title>
<para>
<informalexample>
<programlisting>
1. gunzip apache_1.3.x.tar.gz
2. tar xvf apache_1.3.x.tar
3. gunzip php-3.0.x.tar.gz
4. tar xvf php-3.0.x.tar
5. cd apache_1.3.x
6. ./configure --prefix=/www
7. cd ../php-3.0.x
8. ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
9. make
10. make install
11. cd ../apache_1.3.x
12. ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
13. make
14. make install
Instead of this step you may prefer to simply copy the httpd binary
overtop of your existing binary. Make sure you shut down your
server first though.
15. cd ../php-3.0.x
16. cp php3.ini-dist /usr/local/lib/php3.ini
You can edit /usr/local/lib/php3.ini file to set PHP options. If
you prefer this file in another location, use
--with-config-file-path=/path in step 8.
17. Edit your httpd.conf or srm.conf file and add:
AddType application/x-httpd-php3 .php3
You can choose any extension you wish here. .php3 is simply the one
we suggest.
18. Use your normal procedure for starting the Apache server. (You must
stop and restart the server, not just cause the server to reload by
use a HUP or USR1 signal.)
</programlisting>
</informalexample>
</para>
</sect2>
<sect2>
<title>Configuration</title>
<para>
There are two ways of configuring PHP.
<itemizedlist>
<listitem>
<para>
Using the "setup" script that comes with PHP. This script
asks you a series of questions (almost like the "install"
script of PHP/FI 2.0) and runs "configure" in the end. To run
this script, type <command>./setup</command>.
<para>
This script will also create a file called "do-conf", this
file will contain the options passed to configure. You can
edit this file to change just a few options without having to
re-run setup. Then type <command>./do-conf</command> to run
configure with the new options.
</listitem>
<listitem>
<para>
Running configure by hand. To see what options you have, type
<command>./configure --help</command>.
</listitem>
</itemizedlist>
<para>
Details about some of the different configuration options are
listed below.
<sect2 id="with-apache">
<title>Apache module</title>
<para>
To build PHP as an Apache module, answer "yes" to "Build as an
Apache module?" (the <option><link linkend="with-apache">
--with-apache</link>=<replaceable>DIR</replaceable></option>
option to configure) and specify the Apache distribution base
directory. If you have unpacked your Apache distribution in
<filename class=directory>/usr/local/www/apache_1.2.4</filename>,
this is your Apache distribution base directory. The default
directory is <filename
class=directory>/usr/local/etc/httpd</filename>.
<sect2 id="with-fhttpd">
<title>fhttpd module</title>
<para>
To build PHP as an fhttpd module, answer "yes" to "Build as an
fhttpd module?" (the <option><link linkend="with-fhttpd">
--with-fhttpd</link>=<replaceable>DIR</replaceable></option>
option to configure) and specify the fhttpd source base
directory. The default directory is <filename
class=directory>/usr/local/src/fhttpd</filename>. If you are
running fhttpd, building PHP as a module will give better
performance, more control and remote execution capability.
<sect2 id="install-cgi">
<title>CGI version</title>
<para>
The default is to build PHP as a CGI program. If you are
running a web server PHP has module support for, you should
generally go for that solution for performance reasons. However,
the CGI version enables Apache users to run different
PHP-enabled pages under different user-ids. Please make sure
you read through the <link linkend="security">Security
chapter</link> if you are going to run PHP as a CGI.
<sect2>
<title>Database Support Options</title>
<para>
PHP has native support for a number of databases (as well as
ODBC):
<sect3 id="with-adabas">
<title>Adabas D</title>
<synopsis>
<option>--with-adabas<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Compiles with Adabas D support. The parameter is the Adabas D
install directory and defaults to <filename
class=directory>/usr/local/adabasd</filename>.
<simpara>
<ulink url="http://www.adabas.com/">Adabas home page</ulink>
</sect3>
<sect3 id="with-dbase">
<title>dBase</title>
<synopsis>
<option>--with-dbase</option>
</synopsis>
<simpara>
Enables the bundled DBase support. No external libraries are
required.
</sect3>
<sect3 id="with-filepro">
<title>filePro</title>
<synopsis>
<option>--with-filepro</option>
</synopsis>
<simpara>
Enables the bundled read-only filePro support. No external
libraries are required.
</sect3>
<sect3 id="with-msql">
<title>mSQL</title>
<synopsis>
<option>--with-msql<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Enables mSQL support. The parameter to this option is the mSQL
install directory and defaults to <filename
class=directory>/usr/local/Hughes</filename>. This is the
default directory of the mSQL 2.0 distribution.
<command>configure</command> automatically detects which mSQL
version you are running and PHP supports both 1.0 and 2.0, but
if you compile PHP with mSQL 1.0, you can only access mSQL 1.0
databases, and vice-versa.
<simpara>
See also <link linkend="ini.sect.msql">mSQL Configuration</link>
Directives in the <link linkend="configuration.file">configuration
file</link>.
<simpara>
<ulink url="http://www.hughes.com.au">mSQL home page</ulink>
</sect3>
<sect3 id="with-mysql">
<title>MySQL</title>
<synopsis>
<option>--with-mysql<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Enables MySQL support. The parameter to this option is the
MySQL install directory and defaults to <filename
class=directory>/usr/local</filename>. This is the default
installation directory of the MySQL distribution.
<simpara>
See also <link linkend="ini.sect.mysql">MySQL
Configuration</link> Directives in the <link
linkend="configuration.file">configuration file</link>.
<simpara>
<ulink url="http://www.tcx.se">MySQL home page</ulink>
</sect3>
<sect3 id="with-iodbc">
<title>iODBC</title>
<synopsis>
<option>--with-iodbc<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Includes iODBC support. This feature was first developed for
iODBC Driver Manager, a freely redistributable ODBC driver
manager which runs under many flavors of UNIX. The parameter to
this option is the iODBC installation directory and defaults to
<filename class=directory>/usr/local</filename>.
<simpara>
<ulink url="http://users.ids.net/~bjepson/freeODBC/">FreeODBC
home page</ulink>
</sect3>
<sect3 id="with-openlink">
<title>OpenLink ODBC</title>
<synopsis>
<option>--with-openlink<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Includes OpenLink ODBC support. The parameter to this option is
the OpenLink ODBC installation directory and defaults to
<filename class=directory>/usr/local/openlink</filename>.
<simpara>
<ulink url="http://www.openlinksw.com/">OpenLink Software's home
page</ulink>
</sect3>
<sect3 id="with-oracle">
<title>Oracle</title>
<synopsis>
<option>--with-oracle<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Includes Oracle support. Has been tested and should be working
at least with Oracle versions 7.0 through 7.3. The parameter is
the <envar>ORACLE_HOME</envar> directory. You do not have to
specify this parameter if your Oracle environment has been set
up.
<simpara>
<ulink url="http://www.oracle.com">Oracle home page</ulink>
</sect3>
<sect3 id="with-pgsql">
<title>PostgreSQL</title>
<synopsis>
<option>--with-pgsql<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Includes PostgreSQL support. The parameter is the PostgreSQL
base install directory and defaults to <filename
class=directory>/usr/local/pgsql</filename>.
<simpara>
See also <link linkend="ini.sect.pgsql">Postgres
Configuration</link> Directives in the <link
linkend="configuration.file">configuration file</link>.
<simpara>
<ulink url="http://www.postgreSQL.org/">PostgreSQL home
page</ulink>
</sect3>
<sect3 id="with-solid">
<title>Solid</title>
<synopsis>
<option>--with-solid<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Includes Solid support. The parameter is the Solid install
directory and defaults to <filename
class=directory>/usr/local/solid</filename>.
<simpara>
<ulink url="http://www.solidtech.com">Solid home page</ulink>
</sect3>
<sect3 id="with-sybase">
<title>Sybase</title>
<synopsis>
<option>--with-sybase<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Includes Sybase support. The parameter is the Sybase install
directory and defaults to <filename
class=directory>/home/sybase</filename>.
<simpara>
See also <link linkend="ini.sect.sybase">Sybase
Configuration</link> Directives in the <link
linkend="configuration.file">configuration file</link>.
<simpara>
<ulink url="http://www.sybase.com">Sybase home page</ulink>
</sect3>
<sect3 id="with-sybase-ct">
<title>Sybase-CT</title>
<synopsis>
<option>--with-sybase-ct<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Includes Sybase-CT support. The parameter is the Sybase-CT
install directory and defaults to <filename
class=directory>/home/sybase</filename>.
<simpara>
See also <link linkend="ini.sect.sybct">Sybase-CT
Configuration</link> Directives in the <link
linkend="configuration.file">configuration file</link>.
</sect3>
<sect3 id="with-velocis">
<title>Velocis</title>
<synopsis>
<option>--with-velocis<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Includes Velocis support. The parameter is the Velocis install
directory and defaults to <filename
class=directory>/usr/local/velocis</filename>.
<simpara>
<ulink url="http://www.raima.com">Velocis home page</ulink>
</sect3>
<sect3 id="with-custom-odbc">
<title>A custom ODBC library</title>
<synopsis>
<option>--with-custom-odbc<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Includes support for an arbitrary custom ODBC library. The
parameter is the base directory and defaults to <filename
class=directory>/usr/local</filename>.
<simpara>
This option implies that you have defined CUSTOM_ODBC_LIBS when
you run the configure script. You also must have a valid odbc.h
header somewhere in your include path. If you don't have one,
create it and include your specific header from there. Your
header may also require some extra definitions, particularly
when it is multiplatform. Define them in CFLAGS.
<simpara>
For example, you can use Sybase SQL Anywhere on QNX as
following:
<literal>
CFLAGS=-DODBC_QNX LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib
-lodbc" ./configure --with-custom-odbc=/usr/lib/sqlany50
</literal>
</sect3>
<sect3 id="disable-unified-odbc">
<title>Unified ODBC</title>
<synopsis>
<option>--disable-unified-odbc</option>
</synopsis>
<simpara>
Disables the Unified ODBC module, which is a common interface to
all the databases with ODBC-based interfaces, such as Solid and
Adabas D. It also works for normal ODBC libraries. Has been
tested with iODBC, Solid, Adabas D and Sybase SQL
Anywhere. Requires that one (and only one) of these modules or
the Velocis module is enabled, or a custom ODBC library
specified. This option is only applicable if one of the
following options is used: <link
linkend="with-iodbc">--with-iodbc</link>, <link
linkend="with-solid">--with-solid</link>, <link
linkend="with-adabas">--with-adabas</link>, <link
linkend="with-velocis">--with-velocis</link>, or <link
linkend="with-adabas">--with-custom-odbc</link>,
<simpara>
See also <link linkend="ini.sect.uodbc">Unified ODBC
Configuration</link> Directives in the <link
linkend="configuration.file">configuration file</link>.
</sect3>
<sect3 id="with-ldap">
<title>LDAP</title>
<synopsis>
<option>--with-ldap<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Includes <acronym>LDAP</acronym> (Lightweight Directory Access
Protocol) support. The parameter is the LDAP base install
directory, defaults to <filename
class=directory>/usr/local/ldap</filename>.
<simpara>
More information about LDAP can be found in <ulink
url="ftp://ftp.isi.edu/in-notes/rfc1777.txt">RFC1777</ulink> and
<ulink
url="ftp://ftp.isi.edu/in-notes/rfc1778.txt">RFC1778</ulink>.
</sect3>
</sect2>
<sect2>
<title>Other configure options</title>
<sect3 id="with-mcrypt">
<title>--with-mcrypt<replaceable>=DIR</replaceable></title>
<synopsis>
<option>--with-mcrypt</option>
</synopsis>
<simpara>
Include support for the mcrypt library. See the <link
linkend="ref.mcrypt">mcrypt documentation</link> for more information. If
you use the optional <replaceable>DIR</replaceable> argument, PHP will
look for mcrypt.h in <replaceable>DIR</replaceable>/include.
</simpara>
</sect3>
<sect3 id="enable-sysvsem">
<title>--enable-sysvsem</title>
<synopsis>
<option>--enable-sysvsem</option>
</synopsis>
<simpara>
Include support for Sys V semaphores (supported by most Unix
derivates). See the <link linkend="ref.sem">Semaphore and Shared
Memory documentation</link> for more information.
</simpara>
</sect3>
<sect3 id="enable-sysvshm">
<title>--enable-sysvshm</title>
<synopsis>
<option>--enable-sysvshm</option>
</synopsis>
<simpara>
Include support for Sys V shared memory (supported by most Unix
derivates). See the <link linkend="ref.sem">Semaphore and
Shared Memory documentation</link> for more information.
</simpara>
</sect3>
<sect3 id="with-xml">
<title>--with-xml</title>
<synopsis>
<option>--with-xml</option>
</synopsis>
<simpara>
Include support for a non-validating XML parser using James
Clark's <ulink url="&url.expat;">expat library</ulink>. See the
<link linkend="ref.xml">XML function reference</link> for
details.
</simpara>
</sect3>
<sect3 id="enable-maintainer-mode">
<title>--enable-maintainer-mode</title>
<synopsis>
<option>--enable-maintainer-mode</option>
</synopsis>
<simpara>
Turns on extra dependencies and compiler warnings used by some
of the PHP developers.
</sect3>
<sect3 id="with-system-regex">
<title>--with-system-regex</title>
<synopsis>
<option>--with-system-regex</option>
</synopsis>
<simpara>
Uses the system's regular expression library rather than the
bundled one. If you are building PHP as a server module, you
must use the same library when building PHP as when linking the
server. Enable this if the system's library provides special
features you need. It is recommended that you use the bundled
library if possible.
</sect3>
<sect3 id="with-config-file-path">
<title>--with-config-file-path</title>
<synopsis>
<option>--with-config-file-path=DIR</option>
</synopsis>
<simpara>
The path used to look for <link linkend="configuration.file">the configuration
file</link> when PHP starts up.
</sect3>
<sect3 id="with-exec-dir">
<title>--with-exec-dir</title>
<synopsis>
<option>--with-exec-dir<replaceable>=DIR</replaceable></option>
</synopsis>
<simpara>
Only allow running of executables in DIR when in safe mode.
Defaults to <filename class=directory>/usr/local/bin</filename>.
This option only sets the default, it may be changed with the
<link linkend="ini.safe-mode-exec-dir">safe_mode_exec_dir</link>
directive in the <link linkend="configuration.file">configuration
file</link> later.
</sect3>
<sect3 id="enable-debug">
<title>--enable-debug</title>
<synopsis>
<option>--enable-debug</option>
</synopsis>
<simpara>
Enables extra debug information. This makes it possible to gather
more detailed information when there are problems with PHP.
(Note that this doesn't have anything to do with debugging
facilities or information available to PHP scripts.)
</sect3>
<sect3 id="enable-safe-mode">
<title>--enable-safe-mode</title>
<synopsis>
<option>--enable-safe-mode</option>
</synopsis>
<simpara>
Enables "safe mode" by default. This imposes several
restrictions on what PHP can do, such as opening only files
within the document root. Read the <link
linkend="security">Security chapter</link> for more more
information. CGI users should always enable secure mode. This
option only sets the default, it may be enabled or disabled with
the <link linkend="ini.safe-mode">safe_mode</link> directive in
the <link linkend="configuration.file">configuration file</link> later.
</sect3>
<sect3 id="enable-track-vars">
<title>--enable-track-vars</title>
<synopsis>
<option>--enable-track-vars</option>
</synopsis>
<simpara>
Makes PHP keep track of where GET/POST/cookie variables come
from in the arrays HTTP_GET_VARS, HTTP_POST_VARS and
HTTP_COOKIE_VARS. This option only sets the default, it may be
enabled or disabled with the <link
linkend="ini.track-vars">track_vars</link> directive in the
<link linkend="configuration.file">configuration file</link> later.
</sect3>
<sect3 id="enable-magic-quotes">
<title>--enable-magic-quotes</title>
<synopsis>
<option>--enable-magic-quotes</option>
</synopsis>
<simpara>
Enable magic quotes by default. This option only sets the
default, it may be enabled or disabled with the <link
linkend="ini.magic-quotes-runtime">magic_quotes_runtime</link>
directive in the <link linkend="configuration.file">configuration
file</link> later. See also the <link
linkend="ini.magic-quotes-gpc"> magic_quotes_gpc</link> and the
<link
linkend="ini.magic-quotes-sybase">magic_quotes_sybase</link>
directives.
</sect3>
<sect3 id="enable-debugger">
<title>--enable-debugger</title>
<synopsis>
<option>--enable-debugger</option>
</synopsis>
<simpara>
Enables the internal PHP debugger support. This feature is
still in an experimental state. See also the <link
linkend="ini.sect.debugger">Debugger Configuration</link>
directives in the <link linkend="configuration.file">configuration
file</link>.
</sect3>
<sect3 id="enable-discard-path">
<title>--enable-discard-path</title>
<synopsis>
<option>--enable-discard-path</option>
</synopsis>
<simpara>
If this is enabled, the PHP CGI binary can safely be placed
outside of the web tree and people will not be able to
circumvent .htaccess security. Read the <link
linkend="security.cgi.shell">section in the security
chapter</link> about this option.
</sect3>
<sect3 id="enable-bcmath">
<title>--enable-bcmath</title>
<synopsis>
<option>--enable-bcmath</option>
</synopsis>
<simpara>
Enables <command>bc</command> style arbitrary precision math
functions. See also the <link
linkend="ini.sect.bcmath">bcmath.scale </link> option in the
<link linkend="configuration.file">configuration file</link>.
</sect3>
<sect3 id="enable-force-cgi-redirect">
<title>--enable-force-cgi-redirect</title>
<synopsis>
<option>--enable-force-cgi-redirect</option>
</synopsis>
<simpara>
Enable the security check for internal server redirects. You
should use this if you are running the CGI version with Apache.
<simpara>
When using PHP as a CGI binary, PHP by default always first
checks that it is used by redirection (for example under Apache,
by using Action directives). This makes sure that the PHP
binary cannot be used to bypass standard web server
authentication procedures by calling it directly, like <filename
role=url>http://my.host/cgi-bin/php/secret/doc.html</filename>.
This example accesses <filename
role=url>http://my.host/secret/doc.html</filename> but does not
honour any security settings enforced by httpd for directory
<filename role=dir>/secret</filename>.
<simpara>
Not enabling option disables the check and enables bypassing httpd
security and authentication settings. Do this only if your
server software is unable to indicate that a safe redirection
was done and all your files under your document root and
user directories may be accessed by anyone.
<simpara>
Read the <link linkend="security.cgi.force-redirect">section in
the security chapter</link> about this option.
</sect3>
<sect3 id="disable-short-tags">
<title>--disable-short-tags</title>
<synopsis>
<option>--disable-short-tags</option>
</synopsis>
<simpara>
Disables the short form <literal>&lt;? ?&gt;</literal> PHP
tags. You must disable the short form if you want to use PHP
with <acronym>XML</acronym>. With short tags disabled, the only
PHP code tag is <literal>&lt;?php ?&gt;</literal>. This option
only sets the default, it may be enabled or disabled with the
<link linkend="ini.short-open-tag">short_open_tag</link>
directive in the <link linkend="configuration.file">configuration
file</link> later.
</sect3>
<sect3 id="enable-url-includes">
<title>--enable-url-includes</title>
<synopsis>
<option>--enable-url-includes</option>
</synopsis>
<simpara>
Makes it possible to run code on other HTTP or FTP servers
directly from PHP with <link
linkend="function.include">include()</link>. See also the <link
linkend="ini.include-path">include_path</link> option in the
<link linkend="configuration.file">configuration file</link>.
</sect3>
<sect3 id="disable-syntax-hl">
<title>--disable-syntax-hl</title>
<synopsis>
<option>--disable-syntax-hl</option>
</synopsis>
<simpara>
Turns off syntax highlighting.
</sect3>
<sect3>
<title>CPPFLAGS and LDFLAGS</title>
<para>
To make the PHP installation look for header or library files
in different directories, modify the <envar>CPPFLAGS</envar> and
<envar>LDFLAGS</envar> environment variables, respectively. If
you are using a sensible shell, you should be able to do
<command>
LDFLAGS=-L/my/lib/dir CPPFLAGS=-I/my/include/dir ./configure
</command>
</sect3>
</sect2>
<sect2>
<title>Building</title>
<simpara>
When PHP is configured, you are ready to build the CGI
executable or the PHP library. The command
<command>make</command> should take care of this. If it fails
and you can't figure out why, see the <link
linkend="install-problems">Problems section</link>.
</sect2>
<sect2>
<title>Testing</title>
<simpara>
If you have built PHP as a CGI program, you may test your build
by typing <command>make test</command>. It is always a good idea
to test your build. This way you may catch a problem with PHP
on your platform early instead of having to struggle with it
later.
</sect2>
<sect2>
<title>Benchmarking</title>
<simpara>
If you have built PHP as a CGI program, you may benchmark your
build by typing <command>make bench</command>. Note that if safe
mode is on by default, the benchmark may not be able to finish if
it takes longer then the 30 seconds allowed. This is because the
<function>set_time_limit</function> can not be used in safe
mode. Use the <link
linkend="ini.max-execution-time">max_execution_time</link>
configuration setting to control this time for you own
scripts. <command>make bench</command> ignores the <link
linkend="configuration.file">configuration file</link>.
</sect2>
</sect1>
<sect1 id="install-windows95-nt">
<title>Installation on Windows 95/98/NT systems</title>
<simpara>
This install guide will help you install and configure PHP
on your Windows 9x/NT webservers. This guide was compiled
by &link.bob;. The latest revision can be found at <ulink
url="&url.win32install">&url.win32install</ulink>.
<para>
This guide provides installation support for:
<itemizedlist>
<listitem><para>
Personal Web Server (Newest version recommended)
</para></listitem>
<listitem><para>
Internet Information Server 3 or 4
</para></listitem>
<listitem><para>
Apache 1.3.x
</para></listitem>
<listitem><para>Omni HTTPd 2.0b1
</para></listitem>
</itemizedlist>
<sect2>
<title>General Installation Steps</title>
<para>
The following steps should be performed on all installations
before the server specific instructions.
<itemizedlist>
<listitem>
<para>
Extract the distribution file to a directory of your choice.
"C:\PHP3\" is a good start.
</para>
</listitem>
<listitem>
<para>
Copy the file, 'php3-dist.ini' to your '%WINDOWS%' directory
and rename it to 'php3.ini'. Your '%WINDOWS%' directory is
typically:
<simplelist>
<member>c:\windows for Windows 95/98</member>
<member>c:\winnt or c:\winnt40 for NT servers</member>
</simplelist>
</para>
</listitem>
<listitem>
<para>
Edit your 'php3.ini' file:
<itemizedlist>
<listitem>
<simpara>
You will need to change the 'extension_dir' setting to
point to your php-install-dir, or where you have placed
your 'php3_*.dll' files. ex: c:\php3
</simpara>
</listitem>
<listitem>
<simpara>
If you are using Omni Httpd, do not follow the next step.
Set the 'doc_root' to point to your webservers
document_root. ex: c:\apache\htdocs or c:\webroot
</simpara>
</listitem>
<listitem>
<simpara>
Choose which modules you would like to load when PHP
starts. You can uncomment the: 'extension=php3_*.dll' lines
to load these modules. Some modules require you to have
additional libraries installed on your system for the
module to work correctly. The PHP <ulink
url="&url.php.faq">FAQ</ulink> has more information on
where to get supporting libraries. You can also load a
module dynamically in your script using:
<command>dl("php_*.dll");</command>
</simpara>
</listitem>
<listitem>
<simpara>
On PWS and IIS, you can set the browscap.ini to point to:
'c:\windows\system\inetsrv\browscap.ini' on Windows 95/98
and 'c:\winnt\system32\inetsrv\browscap.ini' on NT
Server. Additional information on using the browscap
functionality in PHP can be found at this <ulink
url="&url.browscap;">mirror</ulink>, select the "source"
button to see it in action.
</simpara>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
<simpara>
The DLLs for PHP extensions are prefixed with 'php3_'. This prevents
confusion between PHP extensions and their supporting libraries.
</sect2>
<sect2>
<title>Windows 95/98/NT and PWS/IIS 3</title>
<simpara>
The recommended method for configuring these servers is to use
the INF file included with the distribution
(php_iis_reg.inf). You may want to edit this file and make sure
the extensions and PHP install directories match your
configuration. Or you can follow the steps below to do it
manually.
</simpara>
<simpara>
WARNING: These steps involve working directly with the windows
registry. One error here can leave your system in an unstable
state. We highly recommend that you back up your registry
first. The PHP Development team will not be held responsible if
you damage your registry.
</simpara>
<para>
<itemizedlist>
<listitem>
<simpara>
Run Regedit.
</simpara>
</listitem>
<listitem>
<simpara>
Navigate to: <literal>HKEY_LOCAL_MACHINE /System
/CurrentControlSet /Services /W3Svc /Parameters
/ScriptMap</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
On the edit menu select: <literal>New->String Value</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Type in the extension you wish to use for your php
scripts. ex: <literal>.php3</literal>
</simpara>
</listitem>
<listitem>
<simpara>
Double click on the new string value and enter the path to
<literal>php.exe</literal> in the value data field. ex:
<literal>c:\php3\php.exe %s %s</literal>. The '%s %s' is VERY
important, PHP will not work properly without it.
</simpara>
</listitem>
<listitem>
<simpara>
Repeat these steps for each extension you wish to associate
with PHP scripts.
</simpara>
</listitem>
<listitem>
<simpara>
Now navigate to: <literal>HKEY_CLASSES_ROOT</literal>
</simpara>
</listitem>
<listitem>
<simpara>
On the edit menu select: <literal>New->Key</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Name the key to the extension you setup in the previous
section. ex: <literal>.php3</literal>
</simpara>
</listitem>
<listitem>
<simpara>
Highlight the new key and in the right side pane, double click
the "default value" and enter <literal>phpfile</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Repeat the last step for each extension you set up in the
previous section.
</simpara>
</listitem>
<listitem>
<simpara>
Now create another <literal>New->Key</literal> under
<literal>HKEY_CLASSES_ROOT</literal> and name it
<literal>phpfile</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Highlight the new key <literal>phpfile</literal> and in the
right side pane, double click the "default value" and enter
<literal>PHP Script</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Right click on the <literal>phpfile</literal> key and select
<literal>New->Key</literal>, name it <literal>Shell</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Right click on the <literal>Shell</literal> key and select
<literal>New->Key</literal>, name it <literal>open</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Right click on the <literal>open</literal> key and select
<literal>New->Key</literal>, name it
<literal>command</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
Highlight the new key <literal>command</literal> and in the
right side pane, double click the "default value" and enter
the path to <literal>php.exe</literal>. ex:
<literal>c:\php3\php.exe -q %1</literal>. (don't forget the
<literal>%1</literal>).
</simpara>
</listitem>
<listitem>
<simpara>
Exit Regedit.
</simpara>
</listitem>
</itemizedlist>
<simpara>
PWS and IIS 3 users now have a fully operational system. IIS 3
users can use a nifty <ulink
url="http://www.genusa.com/iis/iiscfg.html">tool</ulink> from
Steven Genusa to configure their script maps.
</simpara>
</sect2>
<sect2>
<title>Windows NT and IIS 4</title>
<simpara>
To install PHP on an NT Server running IIS 4, follow these
instructions:
</simpara>
<para>
<itemizedlist>
<listitem>
<simpara>
In Internet Service Manager (MMC), select the Web site or the
starting point directory of an application.
</simpara>
</listitem>
<listitem>
<simpara>
Open the directory's property sheets (by right clicking and
selecting properties), and then click the Home Directory,
Virtual Directory, or Directory tab.
</simpara>
</listitem>
<listitem>
<simpara>
Click the Configuration button, and then click the App
Mappings tab.
</simpara>
</listitem>
<listitem>
<simpara>
Click Add, and in the Executable box, type:
<literal>c:\path-to-php-dir\php.exe %s %s</literal>. You MUST
have the %s %s on the end, PHP will not function properly if
you fail to do this.
</simpara>
</listitem>
<listitem>
<simpara>
In the Extension box, type the file name extension you want
associated with PHP scripts. (You must repeat step 5 and 6 for
each extension you want accociated with PHP
scripts. (<literal>.php3</literal> and
<literal>.phtml</literal> are common)
</simpara>
</listitem>
<listitem>
<simpara>
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
<literal>php.exe</literal>.
</simpara>
</listitem>
</itemizedlist>
</para>
</sect2>
<sect2>
<title>Windows 9x/NT and Apache 1.3.x</title>
<simpara>
You must edit your <literal>srm.conf</literal> or
<literal>httpd.conf</literal> to configure Apache to work with
the PHP CGI binary.
</simpara>
<simpara>
Although there can be a few variations of configuring PHP under
Apache, this one is simple enough to be used by the
newcomer. Please consult the Apache Docs for further
configuration directives.
<para>
<itemizedlist>
<listitem>
<simpara>
<literal>ScriptAlias /php3/
"c:/path-to-php-dir/"</literal>
</simpara>
</listitem>
<listitem>
<simpara>
<literal>AddType application/x-httpd-php3 .php3</literal>
</simpara>
</listitem>
<listitem>
<simpara>
<literal>AddType application/x-httpd-php3 .phtml</literal>
</simpara>
</listitem>
<listitem>
<simpara>
<literal>Action application/x-httpd-php3 "/php3/php.exe"</literal>
</simpara>
</listitem>
</itemizedlist>
</para>
<simpara>
To use the source code highlighting feature, simply create a PHP
script file and stick this code in: <literal>&lt;?php show_source
("original_php_script.php3"); ?></literal>. Substitute
<literal>original_php_script.php3</literal> with the name of the
file you wish to show the source of. (this is only one way of
doing it). <emphasis>Note:</emphasis> On Win-Apache all back
slashes in a path statement such as: "c:\directory\file.ext",
must be converted to forward slashes.
</simpara>
</sect2>
<sect2>
<title>Omni HTTPd 2.0b1 for Windows</title>
<simpara>
This has got to be the easiest config there is:
</simpara>
<para>
<simplelist>
<member>
Step 1: Install Omni server
</member>
<member>
Step 2: Right click on the blue OmniHTTPd icon in the system
tray and select <literal>Properties</literal>
</member>
<member>
Step 3: Click on <literal>Web Server Global
Settings</literal>
</member>
<member>
Step 4: On the 'External' tab, enter: <literal>virtual = .php3
| actual = c:\path-to-php-dir\php.exe</literal>
</member>
<member>
Step 5: On the <literal>Mime</literal> tab, enter:
<literal>virtual = wwwserver/stdcgi | actual = .php3</literal>
</member>
<member>
Step 6: Click <literal>OK</literal>
</member>
</simplelist>
<simpara>
Repeat steps 2 - 6 for each extension you want to associate with
PHP.
</simpara>
</sect2>
<sect2>
<title>PHP Modules</title>
<para>
<table>
<title>PHP Modules</title>
<tgroup cols="2">
<tbody>
<row>
<entry>php3_calendar.dll</entry>
<entry>Calendar conversion functions</entry>
</row>
<row>
<entry>php3_crypt.dll</entry>
<entry>Crypt functions</entry>
</row>
<row>
<entry>php3_dbase.dll</entry>
<entry>DBase functions</entry>
</row>
<row>
<entry>php3_dbm.dll</entry>
<entry>GDBM emulation via Berkely DB2 library</entry>
</row>
<row>
<entry>php3_filepro.dll</entry>
<entry>READ ONLY access to filepro databases</entry>
</row>
<row>
<entry>php3_gd.dll</entry>
<entry>GD Library functions for gif manipulation</entry>
</row>
<row>
<entry>php3_hyperwave.dll</entry>
<entry>HyperWave functions</entry>
</row>
<row>
<entry>php3_imap4r2.dll</entry>
<entry>IMAP 4 functions</entry>
</row>
<row>
<entry>php3_ldap.dll</entry>
<entry>LDAP functions</entry>
</row>
<row>
<entry>php3_msql1.dll</entry>
<entry>mSQL 1 client</entry>
</row>
<row>
<entry>php3_msql2.dll</entry>
<entry>mSQL 2 client</entry>
</row>
<row>
<entry>php3_mssql.dll</entry>
<entry>MSSQL client (requires MSSQL DB-Libraries</entry>
</row>
<row>
<entry>php3_mysql.dll</entry>
<entry>MySQL functions</entry>
</row>
<row>
<entry>php3_nsmail.dll</entry>
<entry>Netscape mail functions</entry>
</row>
<row>
<entry>php3_oci73.dll</entry>
<entry>Oracle functions</entry>
</row>
<row>
<entry>php3_snmp.dll</entry>
<entry>SNMP get and walk functions (NT only!)</entry>
</row>
<row>
<entry>php3_zlib.dll</entry>
<entry>ZLib functions</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</sect2>
</sect1>
<sect1 id="install-problems">
<title>Problems?</title>
<sect2>
<title>Read the FAQ</title>
<simpara>
Some problems are more common than others. The most common ones
are listed in the PHP FAQ, found at <ulink
url="&url.php.faq;">&url.php.faq;</ulink>
</sect2>
<sect2>
<title>Bug reports</title>
<simpara>
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 <ulink
url="&url.php.bugs;">&url.php.bugs;</ulink>.
</sect2>
<sect2>
<title>Other problems</title>
<simpara>
If you are still stuck, someone on the PHP 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 <ulink url="&url.php;">&url.php;</ulink>. To
subscribe to the PHP mailing list, send an empty mail to <ulink
url="mailto:&email.php3.subscribe;">&email.php3.subscribe;</ulink>.
The mailing list address is <literal>&email.php3;</literal>.
<simpara>
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, etc.), and
preferably enough code to make others able to reproduce and test
your problem.
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->