Servers-Apache
This section contains notes and hints specific to Apache installs
of PHP, both for Unix and
Windows versions.
Details of installing PHP with Apache on Unix
You can select arguments to add to the
configure on line 8 below from the Complete list of configure
options. The version numbers have been omitted here, to
ensure the instructions are not incorrect. You will need to replace
the 'xxx' here with the correct values from your files.
Installation Instructions (Apache Shared Module Version) for PHP 4
Depending on your Apache install and Unix variant, there are many
possible ways to stop and restart the server. Below are some typical
lines used in restarting the server, for different apache/unix
installations. You should replace /path/to/ with
the path to these applications on your systems.
The locations of the apachectl and http(s)dctl binaries often
vary. If your system has locate or
whereis or which commands,
these can assist you in finding your server control programs.
Different examples of compiling PHP for apache are as follows:
This will create a libphp4.so shared
library that is loaded into Apache using a LoadModule line in
Apache's httpd.conf file. The PostgreSQL
support is embedded into this libphp4.so
library.
This will create a libphp4.so shared
library for Apache, but it will also create a
pgsql.so shared library that is loaded into
PHP either by using the extension directive in
&php.ini; file or by loading it explicitly in
a script using the dl function.
This will create a libmodphp4.a library, a
mod_php4.c and some accompanying files and
copy this into the src/modules/php4 directory
in the Apache source tree. Then you compile Apache using
--activate-module=src/modules/php4/libphp4.a
and the Apache build system will create
libphp4.a and link it statically into the
httpd binary. The PostgreSQL support is
included directly into this httpd binary,
so the final result here is a single httpd
binary that includes all of Apache and all of PHP.
Same as before, except instead of including PostgreSQL support
directly into the final httpd you will get
a pgsql.so shared library that you can load
into PHP from either the &php.ini; file or
directly using dl.
When choosing to build PHP in different ways, you should consider
the advantages and drawbacks of each method. Building as a shared
object will mean that you can compile apache separately, and don't
have to recompile everything as you add to, or change, PHP.
Building PHP into apache (static method) means that PHP will
load and run faster. For more information, see the Apache
webpage on DSO support.
Apache's default http.conf currently ships with a section that looks
like this:
Unless you change that to "Group nogroup" or something like that ("Group daemon" is
also very common) PHP will not be able to open files.
Make sure you specify the installed version of apxs when using --with-apxs=/path/to/apxs.
You must NOT use the apxs version that is in the apache sources but the one that is actually
installed on your system.
Installing PHP on Windows with Apache 1.3.x
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),
the other is to use the Apache module DLL. In either case
you need to stop the Apache server, and edit your
srm.conf or httpd.conf
to configure Apache to work with PHP.
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 Docs for further
configuration directives.
If you unziped 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:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php .phtml
Action application/x-httpd-php "/php/php.exe"
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.
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 attacks.
If you would like to use PHP as a module in Apache,
be sure to move php4ts.dll to
the windows/system (for Windows 9x/Me) or winnt/system32
(for Windows NT/2000/XP) directory, overwriting any older file.
Then you should add the following two lines to you Apache
conf file:
LoadModule php4_module c:/php/sapi/php4apache.dll
AddType application/x-httpd-php .php .phtml
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.
You may find after using the windows installer for Apache
that you need to define the AddModule
directive for mod_php4.c in the
configuration file (httpd.conf).
This is done by adding AddModule mod_php4.c
to the AddModule list, near the beginning
of the configuration file. This is especially important if
the ClearModuleList directive is defined.
Failure to do this may mean PHP will not be registered as an
Apache module.
There are 2 ways you can use the source code highlighting feature,
however their ability to work depends on your installation.
If you have configured Apache to use PHP as an ISAPI module, then by
adding the following line to your configuration file you can use
this feature: AddType application/x-httpd-php-source .phps
If you chose to configure Apache to use PHP as a CGI binary, you
will need to use the show_source function. To
do this simply create a PHP script file and add this code:
<?php show_source ("original_php_script.php"); ?>.
Substitute original_php_script.php with
the name of the file you wish to show the source of.
On Win-Apache all backslashes in a path statement such
as "c:\directory\file.ext", must be converted to
forward slashes, as "c:/directory/file.ext".