php-doc-en/install/unix/apache1.xml
Christoph Michael Becker a2fcd66690 Fix link
Based on a patch provided by an anonymous user.

git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@345755 c90b9560-bf6c-de11-be94-00142212c4b1
2018-10-01 14:57:31 +00:00

302 lines
10 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<sect1 xml:id="install.unix.apache" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Apache 1.3.x on Unix systems</title>
<para>
This section contains notes and hints specific to Apache installs
of PHP on Unix platforms. We also have <link
linkend="install.unix.apache2">instructions and notes for Apache 2
on a separate page</link>.
</para>
<para>
You can select arguments to add to the
<command>configure</command> on line 10 below from the <link
linkend="configure.about">list of core configure options</link> and
from extension specific options described at the respective
places in the manual. 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.
</para>
<example xml:id="install.unix.apache.example">
<title>
Installation Instructions (Apache Shared Module Version) for PHP
</title>
<screen>
<![CDATA[
1. gunzip apache_xxx.tar.gz
2. tar -xvf apache_xxx.tar
3. gunzip php-xxx.tar.gz
4. tar -xvf php-xxx.tar
5. cd apache_xxx
6. ./configure --prefix=/www --enable-module=so
7. make
8. make install
9. cd ../php-xxx
10. Now, configure your PHP. This is where you customize your PHP
with various options, like which extensions will be enabled. Do a
./configure --help for a list of available options. In our example
we'll do a simple configure with Apache 1 and MySQL support. Your
path to apxs may differ from our example.
./configure --with-mysql --with-apxs=/www/bin/apxs
11. make
12. make install
If you decide to change your configure options after installation,
you only need to repeat the last three steps. You only need to
restart apache for the new module to take effect. A recompile of
Apache is not needed.
Note that unless told otherwise, 'make install' will also install PEAR,
various PHP tools such as phpize, install the PHP CLI, and more.
13. Setup your php.ini file:
cp php.ini-development /usr/local/lib/php.ini
You may edit your .ini file to set PHP options. If you prefer your
php.ini in another location, use --with-config-file-path=/some/path in
step 10.
If you instead choose php.ini-production, be certain to read the list
of changes within, as they affect how PHP behaves.
14. Edit your httpd.conf to load the PHP module. The path on the right hand
side of the LoadModule statement must point to the path of the PHP
module on your system. The make install from above may have already
added this for you, but be sure to check.
LoadModule php5_module libexec/libphp5.so
15. And in the AddModule section of httpd.conf, somewhere under the
ClearModuleList, add this:
AddModule mod_php5.c
16. Tell Apache to parse certain extensions as PHP. For example,
let's have Apache parse the .php extension as PHP. You could
have any extension(s) parse as PHP by simply adding more, with
each separated by a space. We'll add .phtml to demonstrate.
AddType application/x-httpd-php .php .phtml
It's also common to setup the .phps extension to show highlighted PHP
source, this can be done with:
AddType application/x-httpd-php-source .phps
17. Use your normal procedure for starting the Apache server. (You must
stop and restart the server, not just cause the server to reload by
using a HUP or USR1 signal.)
]]>
</screen>
</example>
<para>
Alternatively, to install PHP as a static object:
</para>
<example xml:id="install.unix.apache.example-static">
<title>
Installation Instructions (Static Module Installation for Apache) for PHP
</title>
<screen>
<![CDATA[
1. gunzip -c apache_1.3.x.tar.gz | tar xf -
2. cd apache_1.3.x
3. ./configure
4. cd ..
5. gunzip -c php-5.x.y.tar.gz | tar xf -
6. cd php-5.x.y
7. ./configure --with-mysql --with-apache=../apache_1.3.x
8. make
9. make install
10. cd ../apache_1.3.x
11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
(The above line is correct! Yes, we know libphp5.a does not exist at this
stage. It isn't supposed to. It will be created.)
12. make
(you should now have an httpd binary which you can copy to your Apache bin dir if
it is your first install then you need to "make install" as well)
13. cd ../php-5.x.y
14. cp php.ini-development /usr/local/lib/php.ini
15. You can edit /usr/local/lib/php.ini file to set PHP options.
Edit your httpd.conf or srm.conf file and add:
AddType application/x-httpd-php .php
]]>
</screen>
</example>
<para>
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 <literal>/path/to/</literal> with
the path to these applications on your systems.
</para>
<para>
<example>
<title>Example commands for restarting Apache</title>
<programlisting role="shell">
<![CDATA[
1. Several Linux and SysV variants:
/etc/rc.d/init.d/httpd restart
2. Using apachectl scripts:
/path/to/apachectl stop
/path/to/apachectl start
3. httpdctl and httpsdctl (Using OpenSSL), similar to apachectl:
/path/to/httpsdctl stop
/path/to/httpsdctl start
4. Using mod_ssl, or another SSL server, you may want to manually
stop and start:
/path/to/apachectl stop
/path/to/apachectl startssl
]]>
</programlisting>
</example>
</para>
<para>
The locations of the apachectl and http(s)dctl binaries often
vary. If your system has <literal>locate</literal>,
<literal>whereis</literal> or <literal>which</literal> commands,
these can assist you in finding your server control programs.
</para>
<para>
Different examples of compiling PHP for apache are as follows:
<informalexample>
<programlisting role="shell">
<![CDATA[
./configure --with-apxs --with-pgsql
]]>
</programlisting>
</informalexample>
</para>
<para>
This will create a <filename>libphp5.so</filename> shared library
that is loaded into Apache using a LoadModule line in Apache's
&httpd.conf; file. The PostgreSQL support is embedded into this
library.
</para>
<para>
<informalexample>
<programlisting role="shell">
<![CDATA[
./configure --with-apxs --with-pgsql=shared
]]>
</programlisting>
</informalexample>
</para>
<para>
This will create a <filename>libphp5.so</filename> shared
library for Apache, but it will also create a
<filename>pgsql.so</filename> 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 <function>dl</function> function.
</para>
<para>
<informalexample>
<programlisting role="shell">
<![CDATA[
./configure --with-apache=/path/to/apache_source --with-pgsql
]]>
</programlisting>
</informalexample>
</para>
<para>
This will create a <filename>libmodphp5.a</filename> library, a
<filename>mod_php5.c</filename> and some accompanying files and
copy this into the <literal>src/modules/php5</literal> directory
in the Apache source tree. Then you compile Apache using
<literal>--activate-module=src/modules/php5/libphp5.a</literal>
and the Apache build system will create
<filename>libphp5.a</filename> and link it statically into the
<filename>httpd</filename> binary. The PostgreSQL support is
included directly into this <filename>httpd</filename> binary,
so the final result here is a single <filename>httpd</filename>
binary that includes all of Apache and all of PHP.
</para>
<para>
<informalexample>
<programlisting role="shell">
<![CDATA[
./configure --with-apache=/path/to/apache_source --with-pgsql=shared
]]>
</programlisting>
</informalexample>
</para>
<para>
Same as before, except instead of including PostgreSQL support
directly into the final <filename>httpd</filename> you will get
a <filename>pgsql.so</filename> shared library that you can load
into PHP from either the &php.ini; file or
directly using <function>dl</function>.
</para>
<para>
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
<link xlink:href="&url.apachedso;">web page on DSO support</link>.
</para>
<note>
<para>
Apache's default &httpd.conf; currently ships with a section that looks
like this:
<informalexample>
<programlisting role="apache-conf">
<![CDATA[
User nobody
Group "#-1"
]]>
</programlisting>
</informalexample>
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.
</para>
</note>
<note>
<para>
Make sure you specify the installed version of apxs when using
<option role="configure">--with-apxs=/path/to/apxs</option>.
You must NOT use the apxs version that is in the apache sources but the one
that is actually installed on your system.
</para>
</note>
</sect1>
<!-- 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
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->