source: general/prog/php-systemd.xml@ 1754613

krejzi/svn
Last change on this file since 1754613 was d5169f16, checked in by Krejzi <krejzi@…>, 10 years ago

Improvements, updates, additions to Programming section.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/branches/systemd-ng@14748 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 18.6 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY php-download-http "http://www.php.net/distributions/php-&php-version;.tar.xz">
8 <!ENTITY php-download-ftp "ftp://ftp.isu.edu.tw/pub/Unix/Web/PHP/distributions/php-&php-version;.tar.xz">
9 <!ENTITY php-md5sum "c976f54d429a0e5214659b0098e44e37">
10 <!ENTITY php-size "11 MB">
11 <!ENTITY php-buildsize "378 MB">
12 <!ENTITY php-time "4.0 SBU">
13]>
14
15<sect1 id="php" xreflabel="PHP-&php-version;">
16 <?dbhtml filename="php.html"?>
17
18 <sect1info>
19 <othername>$LastChangedBy$</othername>
20 <date>$Date$</date>
21 </sect1info>
22
23 <title>PHP-&php-version;</title>
24
25 <indexterm zone="php">
26 <primary sortas="a-PHP">PHP</primary>
27 </indexterm>
28
29 <sect2 role="package">
30 <title>Introduction to PHP</title>
31
32 <para><application>PHP</application> is the PHP Hypertext Preprocessor.
33 Primarily used in dynamic web sites, it allows for programming code to be
34 directly embedded into the HTML markup. It is also useful as a
35 general purpose scripting language.</para>
36
37 &lfs76_checked;
38
39 <bridgehead renderas="sect3">Package Information</bridgehead>
40 <itemizedlist spacing="compact">
41 <listitem>
42 <para>Download (HTTP): <ulink url="&php-download-http;"/></para>
43 </listitem>
44 <listitem>
45 <para>Download (FTP): <ulink url="&php-download-ftp;"/></para>
46 </listitem>
47 <listitem>
48 <para>Download MD5 sum: &php-md5sum;</para>
49 </listitem>
50 <listitem>
51 <para>Download size: &php-size;</para>
52 </listitem>
53 <listitem>
54 <para>Estimated disk space required: &php-buildsize;</para>
55 </listitem>
56 <listitem>
57 <para>Estimated build time: &php-time;</para>
58 </listitem>
59 </itemizedlist>
60
61 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
62 <itemizedlist spacing="compact">
63 <listitem>
64 <para>Pre-built documentation (optional): <ulink
65 url="http://www.php.net/download-docs.php"/></para>
66 </listitem>
67 </itemizedlist>
68
69 <bridgehead renderas="sect3">PHP Dependencies</bridgehead>
70
71 <bridgehead renderas="sect4">Recommended</bridgehead>
72 <para role="recommended">
73 <xref linkend="apache"/> and
74 <xref linkend="libxml2"/>
75 </para>
76
77 <bridgehead renderas="sect4">Optional System Utilities and Libraries</bridgehead>
78 <para role="optional"><xref linkend="libxslt"/>,
79 <!-- <xref linkend="gamin"/>, -->
80 <xref linkend="pcre"/>,
81 <xref linkend="aspell"/>,
82 <xref linkend="enchant"/>,
83 <xref linkend="pth"/>,
84 an <xref linkend="server-mail"/> (that provides a
85 <command>sendmail</command> command)
86 <ulink url="http://www.ossp.org/pkg/lib/mm/">OSSP mm</ulink>,
87 <ulink url="http://www.net-snmp.org/">Net-SNMP</ulink>,
88 <ulink url="http://re2c.org/">re2c</ulink>,
89 <ulink url="http://xmlrpc-epi.sourceforge.net/main.php?t=php_about">XMLRPC-EPI</ulink>, and
90 <ulink url="http://dmalloc.com/">Dmalloc</ulink></para>
91
92 <bridgehead renderas="sect4">Optional Graphics Utilities and Libraries</bridgehead>
93 <para role="optional"><xref linkend="libjpeg"/>,
94 <xref linkend="libtiff"/>,
95 <xref linkend="libpng"/>,
96 <xref linkend="libexif"/>,
97 <xref linkend="freetype2"/>,
98 <xref linkend="x-window-system"/>,
99 <ulink url="http://www.fastio.com/">ClibPDF</ulink>,
100 <ulink url="https://bitbucket.org/libgd/gd-libgd/downloads">GD</ulink>,
101 <ulink url="http://fossies.org/linux/misc/t1lib-5.1.2.tar.gz/">t1lib</ulink>, and
102 <ulink url="http://www.adobe.com/devnet/acrobat/fdftoolkit.html">FDF Toolkit</ulink></para>
103
104 <bridgehead renderas="sect4">Optional Web Utilities</bridgehead>
105 <para role="optional"><xref linkend="curl"/>,
106 <xref linkend="html-tidy"/>,
107 <ulink url="http://www.mnogosearch.org/">mnoGoSearch</ulink>,
108 <ulink url="http://www.hyperwave.com/">Hyperwave</ulink>,
109 <ulink url="http://www.roxen.com/products/webserver/">Roxen WebServer</ulink>,
110 <ulink url="http://sourceforge.net/projects/caudium/">Caudium</ulink>, and
111 <ulink url="https://wddxnet.codeplex.com/">WDDX</ulink></para>
112
113 <bridgehead renderas="sect4">Optional Data Management Utilities and Libraries</bridgehead>
114 <para role="optional"><xref linkend="openldap"/>,
115 <!-- <xref linkend="gdbm"/>, -->
116 <xref linkend="db"/>,
117 <xref linkend="mariadb"/> or <ulink url="http://www.mysql.com/">MySQL</ulink>,
118 <xref linkend="postgresql"/>,
119 <xref linkend="unixodbc"/>,
120 <xref linkend="sqlite"/>,
121 <ulink url="http://sourceforge.net/projects/qdbm">QDBM</ulink>,
122 <ulink url="http://cr.yp.to/cdb.html">cdb</ulink>,
123 <ulink url="http://www.hughes.com.au/products/msql/">Mini SQL</ulink>,
124 <ulink url="http://www.empress.com/">Empress</ulink>,
125 <ulink url="http://www.birdstep.com/">Birdstep</ulink>,
126 <ulink url="http://www.dbmaker.com/">DBMaker</ulink>,
127 <ulink url="http://www.softwareag.com/">Adabas</ulink>,
128 <ulink url="http://www.frontbase.com/">FrontBase</ulink>, and
129 <ulink url="http://www.mainstreetsoftworks.com/">Monetra</ulink></para>
130
131 <para><application>PHP</application> also provides support for many
132 commercial database tools such as <application>Oracle</application>,
133 <application>SAP</application> and
134 <application>ODBC Router</application>.</para>
135
136 <bridgehead renderas="sect4">Optional Security/Encryption Utilities and Libraries</bridgehead>
137 <para role="optional"><xref linkend="openssl"/>,
138 <xref linkend="cyrus-sasl"/>,
139 <xref linkend="mitkrb"/>,
140 <ulink url="http://mcrypt.sourceforge.net/">libmcrypt</ulink>, and
141 <ulink url="http://mhash.sourceforge.net/">mhash</ulink></para>
142
143 <para condition="html" role="usernotes">User Notes:
144 <ulink url="&blfs-wiki;/php"/></para>
145
146 </sect2>
147
148 <sect2 role="installation">
149 <title>Installation of PHP</title>
150
151 <para>You can use <application>PHP</application> for server-side
152 scripting, command-line scripting or client-side GUI applications. This
153 book provides instructions for setting up <application>PHP</application>
154 for server-side scripting as it is the most common form.</para>
155
156 <note>
157 <para><application>PHP</application> has many more
158 <command>configure</command> options that will enable support for various
159 things. You can use <command>./configure --help</command> to see a full
160 list of the available options. Also, use of the
161 <ulink url="http://www.php.net/">PHP web site</ulink>
162 is highly recommended, as their online docs are very good. An example of
163 a <command>configure</command> command that utilizes many of the most
164 common dependencies can be found at <ulink
165 url="&files-anduin;/php_configure.txt"/>.
166 </para>
167
168 <para>If, for whatever reason, you don't have <xref linkend="libxml2"/>
169 installed, you need to add <option>--disable-libxml</option> to the
170 <command>configure</command> command in the instructions below. Note that
171 this will prevent the <command>pear</command> command from being
172 built.</para>
173 </note>
174
175 <para>Install <application>PHP</application> by
176 running the following commands:</para>
177
178<screen><userinput>sed -i "s|lsystemd-daemon|lsystemd|g" configure &amp;&amp;
179
180./configure --prefix=/usr \
181 --sysconfdir=/etc \
182 --localstatedir=/var \
183 --datadir=/usr/share/php \
184 --mandir=/usr/share/man \
185 --enable-fpm \
186 --with-fpm-user=apache \
187 --with-fpm-group=apache \
188 --with-fpm-systemd \
189 --with-config-file-path=/etc \
190 --with-zlib \
191 --enable-bcmath \
192 --with-bz2 \
193 --enable-calendar \
194 --enable-dba=shared \
195 --with-gdbm \
196 --with-gmp \
197 --enable-ftp \
198 --with-gettext \
199 --enable-mbstring \
200 --with-readline &amp;&amp;
201make</userinput></screen>
202
203 <para>To test the results, issue: <command>make test</command>. A few
204 tests may fail, in which case you are asked whether you want to send
205 the report to the PHP developpers. If you want to automate the test,
206 you may prefix the command with <command>yes "n" | </command>.</para>
207
208 <para>Now, as the <systemitem class="username">root</systemitem> user:</para>
209
210<!-- dev note: make INSTALL_ROOT=<DESTDIR> install -->
211
212<screen role="root"><userinput>make install &amp;&amp;
213install -v -m644 php.ini-production /etc/php.ini &amp;&amp;
214mv -v /etc/php-fpm.conf{.default,} &amp;&amp;
215
216install -v -m755 -d /usr/share/doc/php-&php-version; &amp;&amp;
217install -v -m644 CODING_STANDARDS EXTENSIONS INSTALL NEWS README* UPGRADING* php.gif \
218 /usr/share/doc/php-&php-version; &amp;&amp;
219ln -v -sfn /usr/lib/php/doc/Archive_Tar/docs/Archive_Tar.txt \
220 /usr/share/doc/php-&php-version; &amp;&amp;
221ln -v -sfn /usr/lib/php/doc/Structures_Graph/docs \
222 /usr/share/doc/php-&php-version;</userinput></screen>
223
224 <para>The pre-built HTML documentation is packaged in two forms: a tarball
225 containing many individual files, useful for quick loading into your
226 browser, and one large individual file, which is useful for using the
227 search utility of your browser. If you downloaded either, or both, of the
228 documentation files, issue the following commands as the
229 <systemitem class='username'>root</systemitem> user to install them (note
230 these instructions assume English docs, modify the tarball names below if
231 necessary).</para>
232
233 <para>For the <quote>Single HTML</quote> file:</para>
234
235<screen role="root"><userinput>install -v -m644 ../php_manual_en.html.gz \
236 /usr/share/doc/php-&php-version; &amp;&amp;
237gunzip -v /usr/share/doc/php-&php-version;/php_manual_en.html.gz</userinput></screen>
238
239 <para>For the <quote>Many HTML files</quote> tarball:</para>
240
241<screen role="root"><userinput>tar -xvf ../php_manual_en.tar.gz \
242 -C /usr/share/doc/php-&php-version; --no-same-owner</userinput></screen>
243
244 </sect2>
245
246 <sect2 role="commands">
247 <title>Command Explanations</title>
248
249 <para><command>sed -i "s|lsystemd-daemon|lsystemd|g" configure</command>:
250 This command fixes the detection of the systemd library.</para>
251
252 <para><parameter>--with-datadir=/usr/share/php</parameter>: This works
253 around a bug in the build machinery, which installs some data to a
254 wrong location.</para>
255
256 <para><parameter>--enable-fpm</parameter>: This parameter allows
257 building the FastCGI Process Manager.</para>
258
259 <para><parameter>--with-fpm-systemd</parameter>: This parameter allows
260 the FastCGI Process Manager to integrate with systemd.</para>
261
262 <para><parameter>--with-config-file-path=/etc</parameter>: This parameter
263 makes <application>PHP</application> look for the
264 <filename>php.ini</filename> configuration file in
265 <filename class="directory">/etc</filename>.</para>
266
267 <para><parameter>--with-zlib</parameter>: This parameter adds
268 support for <application>Zlib</application> compression.</para>
269
270 <para><parameter>--enable-bcmath</parameter>: Enables
271 <command>bc</command> style precision math functions.</para>
272
273 <para><parameter>--with-bz2</parameter>: Adds support for
274 <application>Bzip2</application> compression functions.</para>
275
276 <para><parameter>--enable-calendar</parameter>: This parameter
277 provides support for calendar conversion.</para>
278
279 <para><parameter>--enable-dba=shared</parameter>: This parameter enables
280 support for database (dbm-style) abstraction layer functions.</para>
281
282 <para><parameter>--enable-ftp</parameter>: This parameter
283 enables FTP functions.</para>
284
285 <para><parameter>--with-gettext</parameter>: Enables functions
286 that use <application>Gettext</application> text translation.</para>
287
288 <para><parameter>--enable-mbstring</parameter>: This parameter
289 enables multibyte string support.</para>
290
291 <para><parameter>--with-readline</parameter>: This parameter
292 enables command line <application>Readline</application> support.</para>
293
294 <para><option>--with-mysql</option>: This option
295 includes <application>MariaDB/MySQL</application> support.</para>
296
297 <para><option>--disable-libxml</option>: This option
298 allows building PHP without <application>libxml2</application>
299 installed.</para>
300
301 <para><option>--with-apxs2</option>: Instead of building the fastCGI process
302 manager, it is possible to build an <application>apache</application> module.
303 This has some performance penalty for heavy loaded servers, but may be easier
304 to set up. This switch is incompatible with the
305 <parameter>--enable-fpm</parameter> and <parameter>--with-fpm-...</parameter>
306 switches.</para>
307
308 </sect2>
309
310 <sect2 role="configuration">
311 <title>Configuring PHP</title>
312
313 <sect3 id="php-config">
314 <title>Config Files</title>
315
316 <para><filename>/etc/php.ini</filename>,
317 <filename>/etc/pear.conf</filename> and
318 <filename>/etc/php-fpm.conf</filename></para>
319
320 <indexterm zone="php php-config">
321 <primary sortas="e-etc-php.ini">/etc/php.ini</primary>
322 </indexterm>
323
324 <indexterm zone="php php-config">
325 <primary sortas="e-etc-pear.conf">/etc/pear.conf</primary>
326 </indexterm>
327
328 <indexterm zone="php php-config">
329 <primary sortas="e-etc-php-fpm.conf">/etc/php-fpm.conf</primary>
330 </indexterm>
331
332 </sect3>
333
334 <sect3>
335 <title>Configuration Information</title>
336
337 <para>The file used as the default <filename>/etc/php.ini</filename>
338 configuration file is recommended by the <application>PHP</application>
339 development team. This file modifies the default behavior of
340 <application>PHP</application>. If no <filename>/etc/php.ini</filename>
341 is used, all configuration settings fall to the defaults. You should
342 review the comments in this file and ensure the changes are acceptable
343 in your particular environment.</para>
344
345 <para>You may have noticed the following from the output of the
346 <command>make install</command> command:</para>
347
348<screen><computeroutput>You may want to add: /usr/lib/php to your php.ini include_path</computeroutput></screen>
349
350 <para>If desired, add the entry using the following command as the
351 <systemitem class="username">root</systemitem> user:</para>
352
353<screen role="root"><userinput>sed -i 's@php/includes"@&amp;\ninclude_path = ".:/usr/lib/php"@' \
354 /etc/php.ini</userinput></screen>
355
356 <para>To enable fastCGI support in the <application>Apache</application>
357 web server, two LoadModule directives must be added to the
358 <filename>httpd.conf</filename> file. They are commented out, so just issue the
359 following command as <systemitem class="username">root</systemitem> user:</para>
360
361<screen role="root"><userinput>sed -i -e '/proxy_module/s/^#//' \
362 -e '/proxy_fcgi_module/s/^#//' \
363 /etc/httpd/httpd.conf</userinput></screen>
364
365 <para>Those modules accept various <command>ProxyPass</command>
366 directives. One possibility is (as the
367 <systemitem class="username">root</systemitem> user):</para>
368
369<screen role="root"><userinput>echo \
370'ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/srv/www/$1' >> \
371/etc/httpd/httpd.conf</userinput></screen>
372
373 <para>Additionally, it may be useful to add an entry for
374 <filename>index.php</filename> to the DirectoryIndex directive of the
375 <filename>httpd.conf</filename> file. Lastly, adding a line to setup the
376 <filename class='extension'>.phps</filename> extension to show
377 highlighted <application>PHP</application> source may be
378 desirable:</para>
379
380<screen><literal>AddType application/x-httpd-php-source .phps</literal></screen>
381
382 <para>You'll need to restart the <application>Apache</application> web server
383 after making any modifications to the <filename>httpd.conf</filename>
384 file.</para>
385
386 </sect3>
387
388 <sect3 id="php-init">
389 <title>Systemd Units</title>
390
391 <para>
392 To start the <command>php-fpm</command> daemon at boot,
393 install the systemd unit from the <xref linkend="bootscripts"/>
394 package by running the following command as the
395 <systemitem class="username">root</systemitem> user:
396 </para>
397
398 <indexterm zone="php php-init">
399 <primary sortas="f-php-fpm">php-fpm</primary>
400 </indexterm>
401
402<screen role="root"><userinput>make install-php-fpm</userinput></screen>
403 </sect3>
404
405 </sect2>
406
407 <sect2 role="content">
408 <title>Contents</title>
409
410 <segmentedlist>
411 <segtitle>Installed Programs</segtitle>
412 <segtitle>Installed Libraries</segtitle>
413 <segtitle>Installed Directories</segtitle>
414
415 <seglistitem>
416 <seg>pear, peardev, pecl, phar (symlink), phar.phar,
417 php, php-cgi, php-config, php-fpm, and phpize</seg>
418 <seg>None</seg>
419 <seg>/usr/include/php, /usr/lib/php, /usr/share/php and
420 /usr/share/doc/php-&php-version;</seg>
421 </seglistitem>
422 </segmentedlist>
423
424 <variablelist>
425 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
426 <?dbfo list-presentation="list"?>
427 <?dbhtml list-presentation="table"?>
428
429 <varlistentry id="php-prog">
430 <term><command>php</command></term>
431 <listitem>
432 <para>is a command line interface that enables you to parse and
433 execute PHP code.</para>
434 <indexterm zone="php php-prog">
435 <primary sortas="b-php">php</primary>
436 </indexterm>
437 </listitem>
438 </varlistentry>
439
440 <varlistentry id="pear">
441 <term><command>pear</command></term>
442 <listitem>
443 <para>is the PHP Extension and Application
444 Repository (PEAR) package manager.</para>
445 <indexterm zone="php pear">
446 <primary sortas="b-pear">pear</primary>
447 </indexterm>
448 </listitem>
449 </varlistentry>
450
451 <varlistentry id="php-fpm">
452 <term><command>php-fpm</command></term>
453 <listitem>
454 <para>is the fastCGI process manager for PHP.</para>
455 <indexterm zone="php php-fpm">
456 <primary sortas="b-php-fpm">php-fpm</primary>
457 </indexterm>
458 </listitem>
459 </varlistentry>
460
461 </variablelist>
462
463 </sect2>
464
465</sect1>
Note: See TracBrowser for help on using the repository browser.