mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-15 16:38:54 +00:00

Based on a patch provided by Bill Mitchell. git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@345819 c90b9560-bf6c-de11-be94-00142212c4b1
376 lines
10 KiB
XML
376 lines
10 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<sect1 xml:id="install.unix.apache2" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Apache 2.x on Unix systems</title>
|
|
<para>
|
|
This section contains notes and hints specific to Apache 2.x installs
|
|
of PHP on Unix systems.
|
|
</para>
|
|
|
|
&warn.apache2.compat;
|
|
|
|
<para>
|
|
The <link xlink:href="&url.apache2.docs;">Apache Documentation</link>
|
|
is the most authoritative source of information on the Apache 2.x server.
|
|
More information about installation options for Apache may be found
|
|
there.
|
|
</para>
|
|
|
|
<para>
|
|
The most recent version of Apache HTTP Server may be obtained from
|
|
<link xlink:href="&url.apache;">Apache download site</link>,
|
|
and a fitting PHP version from the above mentioned places.
|
|
This quick guide covers only the basics to get started with Apache 2.x
|
|
and PHP. For more information read the
|
|
<link xlink:href="&url.apache2.docs;">Apache Documentation</link>.
|
|
The version numbers have been omitted here, to ensure the
|
|
instructions are not incorrect. In the examples below, 'NN' should be
|
|
replaced with the specific version of Apache being used.
|
|
</para>
|
|
|
|
<para>
|
|
There are currently two versions of Apache 2.x - there's 2.4 and 2.2.
|
|
While there are various reasons for choosing each, 2.4 is the current
|
|
latest version, and the one that is recommended, if that option is
|
|
available to you. However, the instructions here will work for either
|
|
2.4 or 2.2. Note that Apache httpd 2.2 is officially End Of Life,
|
|
and no new development or patches are being issued for it.
|
|
</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Obtain the Apache HTTP server from the location listed above,
|
|
and unpack it:</para>
|
|
|
|
<informalexample>
|
|
<screen>
|
|
<![CDATA[
|
|
tar -xzf httpd-2.x.NN.tar.gz
|
|
]]>
|
|
</screen>
|
|
</informalexample>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Likewise, obtain and unpack the PHP source:</para>
|
|
|
|
<informalexample>
|
|
<screen>
|
|
<![CDATA[
|
|
tar -xzf php-NN.tar.gz
|
|
]]>
|
|
</screen>
|
|
</informalexample>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Build and install Apache. Consult the Apache install documentation for
|
|
more details on building Apache.
|
|
</para>
|
|
|
|
<informalexample>
|
|
<screen>
|
|
<![CDATA[
|
|
cd httpd-2_x_NN
|
|
./configure --enable-so
|
|
make
|
|
make install
|
|
]]>
|
|
</screen>
|
|
</informalexample>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Now you have Apache 2.x.NN available under /usr/local/apache2,
|
|
configured with loadable module support and the standard MPM prefork.
|
|
To test the installation use your normal procedure for starting
|
|
the Apache server, e.g.:
|
|
|
|
<informalexample>
|
|
<screen>
|
|
<![CDATA[
|
|
/usr/local/apache2/bin/apachectl start
|
|
]]>
|
|
</screen>
|
|
</informalexample>
|
|
|
|
and stop the server to go on with the configuration for PHP:
|
|
|
|
<informalexample>
|
|
<screen>
|
|
<![CDATA[
|
|
/usr/local/apache2/bin/apachectl stop
|
|
]]>
|
|
</screen>
|
|
</informalexample>
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
Now, configure and build PHP. This is where you customize PHP
|
|
with various options, like which extensions will be enabled. Run
|
|
./configure --help for a list of available options. In our example
|
|
we'll do a simple configure with Apache 2 and MySQL support.
|
|
</para>
|
|
|
|
<para>
|
|
If you built Apache from source, as described above, the below example will
|
|
match your path for apxs, but if you installed Apache some other way, you'll
|
|
need to adjust the path to apxs accordingly. Note that some distros may rename
|
|
apxs to apxs2.
|
|
</para>
|
|
<informalexample>
|
|
<screen>
|
|
<![CDATA[
|
|
cd ../php-NN
|
|
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
|
|
make
|
|
make install
|
|
]]>
|
|
</screen>
|
|
</informalexample>
|
|
|
|
<para>
|
|
If you decide to change your configure options after installation,
|
|
you'll need to re-run the configure, make, and make install steps.
|
|
You only need to
|
|
restart apache for the new module to take effect. A recompile of
|
|
Apache is not needed.
|
|
</para>
|
|
|
|
<para>
|
|
Note that unless told otherwise, 'make install' will also install PEAR,
|
|
various PHP tools such as phpize, install the PHP CLI, and more.
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Setup your php.ini
|
|
</para>
|
|
|
|
<informalexample>
|
|
<screen>
|
|
<![CDATA[
|
|
cp php.ini-development /usr/local/lib/php.ini
|
|
]]>
|
|
</screen>
|
|
</informalexample>
|
|
|
|
<para>
|
|
You may edit your .ini file to set PHP options. If you prefer having
|
|
php.ini in another location, use --with-config-file-path=/some/path in
|
|
step 5.
|
|
</para>
|
|
|
|
<para>
|
|
If you instead choose php.ini-production, be certain to read the list
|
|
of changes within, as they affect how PHP behaves.
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
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.
|
|
</para>
|
|
|
|
<informalexample>
|
|
<para>
|
|
For PHP 7:
|
|
</para>
|
|
<programlisting role="apache-conf">
|
|
<![CDATA[
|
|
LoadModule php7_module modules/libphp7.so
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
|
|
<informalexample>
|
|
<para>
|
|
For PHP 5:
|
|
</para>
|
|
<programlisting role="apache-conf">
|
|
<![CDATA[
|
|
LoadModule php5_module modules/libphp5.so
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
Tell Apache to parse certain extensions as PHP. For example, let's have
|
|
Apache parse .php files as PHP. Instead of only using the Apache AddType
|
|
directive, we want to avoid potentially dangerous uploads and created
|
|
files such as exploit.php.jpg from being executed as PHP. Using this
|
|
example, you could have any extension(s) parse as PHP by simply adding
|
|
them. We'll add .php to demonstrate.
|
|
</para>
|
|
|
|
|
|
<informalexample>
|
|
<programlisting role="apache-conf">
|
|
<![CDATA[
|
|
<FilesMatch \.php$>
|
|
SetHandler application/x-httpd-php
|
|
</FilesMatch>
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
|
|
<para>
|
|
Or, if we wanted to allow .php, .php2, .php3, .php4, .php5, .php6, and
|
|
.phtml files to be executed as PHP, but nothing else, we'd use this:
|
|
</para>
|
|
|
|
<informalexample>
|
|
<programlisting role="apache-conf">
|
|
<![CDATA[
|
|
<FilesMatch "\.ph(p[2-6]?|tml)$">
|
|
SetHandler application/x-httpd-php
|
|
</FilesMatch>
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
|
|
<para>
|
|
And to allow .phps files to be handled by the php source filter, and
|
|
displayed as syntax-highlighted source code, use this:
|
|
</para>
|
|
|
|
<informalexample>
|
|
<programlisting role="apache-conf">
|
|
<![CDATA[
|
|
<FilesMatch "\.phps$">
|
|
SetHandler application/x-httpd-php-source
|
|
</FilesMatch>
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
|
|
<para>
|
|
mod_rewrite may be used To allow any arbitrary .php file to be displayed
|
|
as syntax-highlighted source code, without having to rename or copy it
|
|
to a .phps file:
|
|
</para>
|
|
|
|
<informalexample>
|
|
<programlisting role="apache-conf">
|
|
<![CDATA[
|
|
RewriteEngine On
|
|
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
|
|
<para>
|
|
The php source filter should not be enabled on production systems, where
|
|
it may expose confidential or otherwise sensitive information embedded in
|
|
source code.
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Use your normal procedure for starting the Apache server, e.g.:
|
|
</para>
|
|
|
|
<informalexample>
|
|
<screen>
|
|
<![CDATA[
|
|
/usr/local/apache2/bin/apachectl start
|
|
]]>
|
|
</screen>
|
|
</informalexample>
|
|
|
|
<para>OR</para>
|
|
|
|
<informalexample>
|
|
<screen>
|
|
<![CDATA[
|
|
service httpd restart
|
|
]]>
|
|
</screen>
|
|
</informalexample>
|
|
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>
|
|
Following the steps above you will have a running Apache2 web server with
|
|
support for PHP as a <literal>SAPI</literal> module. Of course there are
|
|
many more configuration options available Apache and PHP. For more
|
|
information type <command>./configure --help</command> in the corresponding
|
|
source tree.
|
|
</para>
|
|
<para>
|
|
Apache may be built multithreaded by selecting the
|
|
<filename>worker</filename> MPM, rather than the standard
|
|
<filename>prefork</filename> MPM, when Apache is built. This is done by
|
|
adding the following option to the argument passed to ./configure, in
|
|
step 3 above:
|
|
</para>
|
|
<informalexample>
|
|
<screen>
|
|
<![CDATA[
|
|
--with-mpm=worker
|
|
]]>
|
|
</screen>
|
|
</informalexample>
|
|
<para>
|
|
This should not be undertaken without being aware of the consequences of
|
|
this decision, and having at least a fair understanding of
|
|
the implications. The Apache documentation
|
|
regarding <link xlink:href="&url.apache2.mpm;">MPM-Modules</link>
|
|
discusses MPMs in a great deal more detail.
|
|
</para>
|
|
<note>
|
|
<para>
|
|
The <link linkend="faq.installation.apache.multiviews">Apache MultiViews
|
|
FAQ</link> discusses using multiviews with PHP.
|
|
</para>
|
|
</note>
|
|
<note>
|
|
<para>
|
|
To build a multithreaded version of Apache, the target system must support threads.
|
|
In this case, PHP should also be built with experimental
|
|
Zend Thread Safety (ZTS). Under this configuration, not all extensions will be available.
|
|
The recommended setup is to build Apache with the default
|
|
<filename>prefork</filename> MPM-Module.
|
|
</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
|
|
-->
|