glfs/general/prog/php.xml
Randy McMurchy ead08d8791 Updated to php-5.2.3
git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@6860 af4574ff-66df-0310-9fd7-8a98e5e911e0
2007-07-08 18:30:04 +00:00

434 lines
17 KiB
XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!ENTITY php-download-http "http://us2.php.net/distributions/php-&php-version;.tar.bz2">
<!ENTITY php-download-ftp "ftp://ftp.isu.edu.tw/pub/Unix/Web/PHP/distributions/php-&php-version;.tar.bz2">
<!ENTITY php-md5sum "eb50b751c8e1ced05bd012d5a0e4dec3">
<!ENTITY php-size "7.4 MB">
<!ENTITY php-buildsize "250 MB (includes installing all documentation)">
<!ENTITY php-time "2.5 SBU (additional 2.7 SBU to run the test suite)">
]>
<sect1 id="php" xreflabel="PHP-&php-version;">
<?dbhtml filename="php.html"?>
<sect1info>
<othername>$LastChangedBy$</othername>
<date>$Date$</date>
</sect1info>
<title>PHP-&php-version;</title>
<indexterm zone="php">
<primary sortas="a-PHP">PHP</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to PHP</title>
<para><application>PHP</application> is the PHP Hypertext Preprocessor.
Primarily used in dynamic web sites, it allows for programming code to be
directly embedded into the HTML markup.</para>
<bridgehead renderas="sect3">Package Information</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>Download (HTTP): <ulink url="&php-download-http;"/></para>
</listitem>
<listitem>
<para>Download (FTP): <ulink url="&php-download-ftp;"/></para>
</listitem>
<listitem>
<para>Download MD5 sum: &php-md5sum;</para>
</listitem>
<listitem>
<para>Download size: &php-size;</para>
</listitem>
<listitem>
<para>Estimated disk space required: &php-buildsize;</para>
</listitem>
<listitem>
<para>Estimated build time: &php-time;</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">Additional Downloads</bridgehead>
<itemizedlist spacing="compact">
<!-- <listitem>
<para>Required patch for Berkeley DB: <ulink
url="&patch-root;/php-&php-version;-db43-1.patch"/></para>
</listitem> -->
<listitem>
<para>Pre-built documentation (optional): <ulink
url="http://www.php.net/download-docs.php"/></para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">PHP Dependencies</bridgehead>
<bridgehead renderas="sect4">Required</bridgehead>
<para role="required"><xref linkend="apache"/></para>
<bridgehead renderas="sect4">Recommended</bridgehead>
<para role="recommended"><xref linkend="libxml2"/></para>
<bridgehead renderas="sect4">Optional System Utilities and Libraries</bridgehead>
<para role="optional"><xref linkend="libxslt"/>,
<!-- <xref linkend="gamin"/>, -->
<xref linkend="gmp"/>,
<xref linkend="pcre"/>,
<xref linkend="aspell"/>,
<xref linkend="pkgconfig"/>,
<xref linkend="recode"/>,
<xref linkend="expat"/> (deprecated alternative to <xref linkend="libxml2"/>),
<ulink url="http://www.ossp.org/pkg/lib/mm/">OSSP mm</ulink>,
<ulink url="http://www.net-snmp.org/">Net-SNMP</ulink>,
<ulink url="http://www.gnu.org/software/pth/">GNU Pth</ulink>,
<ulink url="http://re2c.org/">re2c</ulink>,
<ulink url="http://xmlrpc-epi.sourceforge.net/main.php?t=php_about">XMLRPC-EPI</ulink>,
<ulink url="http://dmalloc.com/">Dmalloc</ulink>, and
an <xref linkend="server-mail"/> (that provides a
<command>sendmail</command> command)</para>
<bridgehead renderas="sect4">Optional Graphics Utilities and Libraries</bridgehead>
<para role="optional"><xref linkend="libjpeg"/>,
<xref linkend="libtiff"/>,
<xref linkend="libpng"/>,
<xref linkend="libexif"/>,
<xref linkend="freetype2"/>,
<xref linkend="x-window-system"/>,
<ulink url="http://www.fastio.com/">ClibPDF</ulink>,
<ulink url="http://www.boutell.com/gd/">GD</ulink>,
<ulink url="http://gd.tuwien.ac.at/visual/ibiblio/libs/graphics/t1lib-5.1.0.tar.gz">
t1lib</ulink>, and
<ulink url="http://partners.adobe.com/asn/acrobat/forms.jsp">FDF Toolkit</ulink></para>
<bridgehead renderas="sect4">Optional Web Utilities</bridgehead>
<para role="optional"><xref linkend="curl"/>,
<xref linkend="html-tidy"/>,
<ulink url="http://www.mnogosearch.org/">mnoGoSearch</ulink>,
<ulink url="http://www.hyperwave.com/">Hyperwave</ulink>,
<ulink url="http://www.roxen.com/products/webserver/">Roxen WebServer</ulink>,
<ulink url="http://caudium.net/">Caudium</ulink>, and
<ulink url="http://www.openwddx.org/">WDDX</ulink></para>
<bridgehead renderas="sect4">Optional Data Management Utilities and Libraries</bridgehead>
<para role="optional"><xref linkend="openldap"/>,
<xref linkend="gdbm"/>,
<!-- <xref linkend="db"/>, -->
<xref linkend="mysql"/>,
<xref linkend="postgresql"/>,
<xref linkend="unixodbc"/>,
<ulink url="http://qdbm.sourceforge.net/">QDBM</ulink>,
<ulink url="http://cr.yp.to/cdb.html">cdb</ulink>,
<ulink url="http://www.sqlite.org/">SQLite</ulink>,
<ulink url="http://www.hughes.com.au/products/msql/">Mini SQL</ulink>,
<ulink url="http://www.empress.com/">Empress</ulink>,
<ulink url="http://www.birdstep.com/">Birdstep</ulink>,
<ulink url="http://www.dbmaker.com/">DBMaker</ulink>,
<ulink url="http://www.softwareag.com/">Adabas</ulink>,
<ulink url="http://www.frontbase.com/">FrontBase</ulink>, and
<ulink url="http://www.mainstreetsoftworks.com/">Monetra</ulink></para>
<para><application>PHP</application> also provides support for many
commercial database tools such as <application>Oracle</application>,
<application>SAP</application> and
<application>ODBC Router</application>.</para>
<bridgehead renderas="sect4">Optional Security/Encryption Utilities and Libraries</bridgehead>
<para role="optional"><xref linkend="openssl"/>,
<xref linkend="cyrus-sasl"/>,
<xref linkend="mitkrb"/> or <xref linkend="heimdal"/>,
<ulink url="http://mcrypt.sourceforge.net/">libmcrypt</ulink>, and
<ulink url="http://mhash.sourceforge.net/">mhash</ulink></para>
<para condition="html" role="usernotes">User Notes:
<ulink url="&blfs-wiki;/php"/></para>
</sect2>
<sect2 role="installation">
<title>Installation of PHP</title>
<para>You can use <application>PHP</application> for server-side
scripting, command-line scripting or client-side GUI applications. This
book provides instructions for setting up <application>PHP</application>
for server-side scripting as it is the most common form.</para>
<!-- Commenting this out for now as BDB is built in LFS
<para>If you have <application>Berkeley DB</application> installed and
wish to utilize it, apply the following patch:</para>
<screen><userinput>patch -Np1 -i ../php-&php-version;-db43-1.patch</userinput></screen>
-->
<note>
<para><application>PHP</application> has many more
<command>configure</command> options that will enable support for various
things. You can use <command>./configure --help</command> to see a full
list of the available options. Also, use of the
<ulink url="http://www.php.net/">PHP web site</ulink>
is highly recommended, as their online docs are very good. An example of
a <command>configure</command> command that utilizes many of the most
common dependencies can be found at <ulink
url="&files-anduin;/php_configure.txt"/>.
</para>
<para>If, for whatever reason, you don't have <xref linkend="libxml2"/>
installed, you need to add <option>--disable-libxml</option> to the
<command>configure</command> command in the instructions below. Note that
this will prevent the <command>pear</command> command from being
built.</para>
</note>
<!-- Commenting this out as libxml is a recommended dependency.
Current protocol in the book is to expect folks to have it
installed and the note above should take care of it.
<para>Remove the <parameter>-disable-libxml</parameter> switch if you
have <xref linkend="libxml2"/> installed otherwise
<command>pear</command> will not be built.</para>
-->
<para>Install <application>PHP</application> by
running the following commands:</para>
<screen><userinput>sed -i 's/const char \*errpfx,/const DB_ENV *dbenv, &amp; const/' \
ext/dba/dba_db4.c &amp;&amp;
./configure --prefix=/usr \
--sysconfdir=/etc \
--with-apxs2 \
--enable-force-cgi-redirect \
--enable-discard-path \
--with-config-file-path=/etc \
--with-zlib \
--enable-bcmath \
--with-bz2 \
--enable-calendar \
--enable-dba \
--enable-exif \
--enable-ftp \
--with-gettext \
--enable-mbstring \
--with-ncurses \
--with-readline &amp;&amp;
make</userinput></screen>
<para>To test the results, issue: <command>make test</command>. Some of
the tests are known to fail.</para>
<!--Three of
the (over 1600) tests are known to fail: an <command>iconv</command>
stream filter test (ext/iconv/tests/iconv_stream_filter.phpt) and two
MBString function overload tests (ext/mbstring/tests/overload01.phpt and
ext/mbstring/tests/overload02.phpt). Additionally, if you have the
<application>unixODBC</application> package installed and linked into the
build, you may see many failures related to it.</para> -->
<para>Now, as the <systemitem class="username">root</systemitem> user:</para>
<screen role="root"><userinput>make install &amp;&amp;
install -v -m644 php.ini-recommended /etc/php.ini &amp;&amp;
install -v -m755 -d /usr/share/doc/php-&php-version; &amp;&amp;
install -v -m644 CODING_STANDARDS EXTENSIONS INSTALL NEWS \
README* TODO* UPGRADING php.gif \
/usr/share/doc/php-&php-version; &amp;&amp;
ln -v -s /usr/lib/php/doc/Archive_Tar/docs/Archive_Tar.txt \
/usr/share/doc/php-&php-version;</userinput></screen>
<para>The pre-built HTML documentation is packaged in two forms: a tarball
containing many individual files, useful for quick loading into your
browser, and one large individual file, which is useful for using the
search utility of your browser. If you downloaded either, or both, of the
documentation files, issue the following commands as the
<systemitem class='username'>root</systemitem> user to install them (note
these instructions assume English docs, modify the tarball names below if
necessary).</para>
<para>For the <quote>Single HTML</quote> file:</para>
<screen role="root"><userinput>install -v -m644 ../php_manual_en.html.gz \
/usr/share/doc/php-&php-version; &amp;&amp;
gunzip -v /usr/share/doc/php-&php-version;/php_manual_en.html.gz</userinput></screen>
<para>For the <quote>Many HTML files</quote> tarball:</para>
<screen role="root"><userinput>tar -xvf ../php_manual_en.tar.gz -C /usr/share/doc/php-&php-version; &amp;&amp;
chown -v -R root:root /usr/share/doc/php-&php-version;/html</userinput></screen>
</sect2>
<sect2 role="commands">
<title>Command Explanations</title>
<para><command>sed -i '...' ext/dba/dba_db4.c</command>: This command is
used to fix an issue with the use of Berkeley DB &gt;= 4.3.x.</para>
<para><parameter>--with-apxs2</parameter>: This parameter
builds the Apache HTTPD 2.0 module.</para>
<para><parameter>--with-config-file-path=/etc</parameter>: This parameter
makes <application>PHP</application> look for the
<filename>php.ini</filename> configuration file in
<filename class='directory'>/etc</filename>.</para>
<para><parameter>--with-zlib</parameter>: This parameter adds
support for <application>Zlib</application> compression.</para>
<para><parameter>--enable-bcmath</parameter>: Enables
<command>bc</command> style precision math functions.</para>
<para><parameter>--with-bz2</parameter>: Adds support for
<application>Bzip2</application> compression functions.</para>
<para><parameter>--enable-calendar</parameter>: This parameter
provides support for calendar conversion.</para>
<para><parameter>--enable-dba</parameter>: This parameter enables
support for database (dbm-style) abstraction layer functions.</para>
<para><parameter>--enable-exif</parameter>: Enables functions
to access metadata from images.</para>
<para><parameter>--enable-ftp</parameter>: This parameter
enables FTP functions.</para>
<para><parameter>--with-gettext</parameter>: Enables functions
that use <application>Gettext</application> text translation.</para>
<para><parameter>--enable-mbstring</parameter>: This parameter
enables multibyte string support.</para>
<para><parameter>--with-ncurses</parameter>: Provides ncurses
terminal independent cursor handling.</para>
<para><parameter>--with-readline</parameter>: This parameter
enables command line <application>Readline</application> support.</para>
<para><parameter>--disable-libxml</parameter>: This parameter
allows building PHP without <application>libxml2</application>
installed.</para>
</sect2>
<sect2 role="configuration">
<title>Configuring PHP</title>
<sect3 id="php-config">
<title>Config Files</title>
<para><filename>/etc/php.ini</filename> and
<filename>/etc/pear.conf</filename></para>
<indexterm zone="php php-config">
<primary sortas="e-etc-php.ini">/etc/php.ini</primary>
</indexterm>
<indexterm zone="php php-config">
<primary sortas="e-etc-pear.conf">/etc/pear.conf</primary>
</indexterm>
</sect3>
<sect3>
<title>Configuration Information</title>
<para>The file used as the default <filename>/etc/php.ini</filename>
configuration file is recommended by the <application>PHP</application>
development team. This file modifies the default behavior of
<application>PHP</application>. If no <filename>/etc/php.ini</filename>
is used, all configuration settings fall to the defaults. You should
review the comments in this file and ensure the changes are acceptable
in your particular environment.</para>
<para>You may have noticed the following from the output of the
<command>make install</command> command:</para>
<screen><computeroutput>You may want to add: /usr/lib/php to your php.ini include_path</computeroutput></screen>
<para>If desired, add the entry using the following command as the
<systemitem class="username">root</systemitem> user:</para>
<screen role="root"><userinput>sed -i 's@php/includes"@&amp;\ninclude_path = ".:/usr/lib/php"@' \
/etc/php.ini</userinput></screen>
<para>To enable PHP support in the <application>Apache</application>
web server, a new LoadModule (which should be handled automatically by the
<command>make install</command> command) and AddType directives
must be added to the <filename>httpd.conf</filename> file:</para>
<screen><literal>LoadModule php5_module lib/apache/libphp5.so
AddType application/x-httpd-php .php</literal></screen>
<para>Additionally, it can be useful to add an entry for
<filename>index.php</filename> to the DirectoryIndex directive of the
<filename>httpd.conf</filename> file. Lastly, adding a line to setup the
<filename class='extension'>.phps</filename> extension to show
highlighted <application>PHP</application> source may be
desirable:</para>
<screen><literal>AddType application/x-httpd-php-source .phps</literal></screen>
<para>You'll need to restart the <application>Apache</application> web server
after making any modifications to the <filename>httpd.conf</filename>
file.</para>
</sect3>
</sect2>
<sect2 role="content">
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Library</segtitle>
<segtitle>Installed Directories</segtitle>
<seglistitem>
<seg>pear, peardev, pecl, php, php-config and phpize</seg>
<seg>libphp5.so Apache module</seg>
<seg>/usr/include/php, /usr/lib/php and
/usr/share/doc/php-&php-version;</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="php-prog">
<term><command>php</command></term>
<listitem>
<para>is a command line interface that enables you to parse and
execute PHP code.</para>
<indexterm zone="php php-prog">
<primary sortas="b-php">php</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="pear">
<term><command>pear</command></term>
<listitem>
<para>is the PHP Extension and Application
Repository (PEAR) package manager.</para>
<indexterm zone="php pear">
<primary sortas="b-pear">pear</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>