source: general/prog/php.xml@ 3c7bd00

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 7.10 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt nosym perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 3c7bd00 was 3c7bd00, checked in by DJ Lucas <dj@…>, 8 years ago

Temporary render fix for bootscripts with REV=systemd.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@17430 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 21.7 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-download-ftp " ">
10 <!ENTITY php-md5sum "75f8d1693a470cefe2a50abd283eb291">
11 <!ENTITY php-size "11 MB">
12 <!ENTITY php-buildsize "427 MB (with tests). Documentation adds 101 MB">
13 <!ENTITY php-time "7.7 SBU (with tests)">
14]>
15
16<sect1 id="php" xreflabel="PHP-&php-version;">
17 <?dbhtml filename="php.html"?>
18
19 <sect1info>
20 <othername>$LastChangedBy$</othername>
21 <date>$Date$</date>
22 </sect1info>
23
24 <title>PHP-&php-version;</title>
25
26 <indexterm zone="php">
27 <primary sortas="a-PHP">PHP</primary>
28 </indexterm>
29
30 <sect2 role="package">
31 <title>Introduction to PHP</title>
32
33 <para>
34 <application>PHP</application> is the PHP Hypertext Preprocessor.
35 Primarily used in dynamic web sites, it allows for programming code to be
36 directly embedded into the HTML markup. It is also useful as a
37 general purpose scripting language.
38 </para>
39
40 &lfs79_checked;
41
42 <bridgehead renderas="sect3">Package Information</bridgehead>
43 <itemizedlist spacing="compact">
44 <listitem>
45 <para>
46 Download (HTTP): <ulink url="&php-download-http;"/>
47 </para>
48 </listitem>
49 <listitem>
50 <para>
51 Download (FTP): <ulink url="&php-download-ftp;"/>
52 </para>
53 </listitem>
54 <listitem>
55 <para>
56 Download MD5 sum: &php-md5sum;
57 </para>
58 </listitem>
59 <listitem>
60 <para>
61 Download size: &php-size;
62 </para>
63 </listitem>
64 <listitem>
65 <para>
66 Estimated disk space required: &php-buildsize;
67 </para>
68 </listitem>
69 <listitem>
70 <para>
71 Estimated build time: &php-time;
72 </para>
73 </listitem>
74 </itemizedlist>
75
76 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
77 <itemizedlist spacing="compact">
78 <listitem>
79 <para>
80 Pre-built documentation (optional): <ulink
81 url="http://www.php.net/download-docs.php"/>
82 </para>
83 </listitem>
84 </itemizedlist>
85
86 <bridgehead renderas="sect3">PHP Dependencies</bridgehead>
87
88 <bridgehead renderas="sect4">Recommended</bridgehead>
89 <para role="recommended">
90 <xref linkend="apache"/> and
91 <xref linkend="libxml2"/>
92 </para>
93
94 <bridgehead renderas="sect4">Optional System Utilities and Libraries</bridgehead>
95 <para role="optional">
96 <xref linkend="aspell"/>,
97 <xref linkend="enchant"/>,
98 <xref linkend="libxslt"/>,
99 an <xref linkend="server-mail"/> (that provides a
100 <command>sendmail</command> command),
101 <xref linkend="pcre"/>,
102 <xref linkend="pth"/>,
103 <ulink url="http://dmalloc.com/">Dmalloc</ulink>,
104 <ulink url="http://www.net-snmp.org/">Net-SNMP</ulink>,
105 <ulink url="http://www.ossp.org/pkg/lib/mm/">OSSP mm</ulink>,
106 <ulink url="http://re2c.org/">re2c</ulink>, and
107 <ulink url="http://xmlrpc-epi.sourceforge.net/main.php?t=php_about">XMLRPC-EPI</ulink>
108 </para>
109
110 <bridgehead renderas="sect4">Optional Graphics Utilities and Libraries</bridgehead>
111 <para role="optional">
112 <xref linkend="freetype2"/>,
113 <xref linkend="libexif"/>,
114 <xref linkend="libjpeg"/>,
115 <xref linkend="libpng"/>,
116 <xref linkend="libtiff"/>,
117 <xref linkend="x-window-system"/>,
118 <!--<ulink url="http://www.fastio.com/">ClibPDF</ulink>, - site asks for username/password-->
119 <ulink url="http://www.adobe.com/devnet/acrobat/fdftoolkit.html">FDF Toolkit</ulink>,
120 <ulink url="https://bitbucket.org/libgd/gd-libgd/downloads">GD</ulink>, and
121 <ulink url="http://fossies.org/linux/misc/t1lib-5.1.2.tar.gz/">t1lib</ulink>
122 </para>
123
124 <bridgehead renderas="sect4">Optional Web Utilities</bridgehead>
125 <para role="optional">
126 <xref linkend="curl"/>,
127 <xref linkend="tidy-html5"/>,
128 <ulink url="http://sourceforge.net/projects/caudium/">Caudium</ulink>,
129 <ulink url="https://www.hyperwave.com/en/">Hyperwave</ulink>,
130 <ulink url="http://www.mnogosearch.org/">mnoGoSearch</ulink>,
131 <ulink url="http://www.roxen.com/products/webserver/">Roxen WebServer</ulink>, and
132 <ulink url="https://wddxnet.codeplex.com/">WDDX</ulink>
133 </para>
134
135 <bridgehead renderas="sect4">Optional Data Management Utilities and Libraries</bridgehead>
136 <para role="optional">
137 <xref linkend="db"/> (Note that PHP does not officially support versions
138 above 5.3),
139 <xref linkend="mariadb"/> or <ulink url="http://www.mysql.com/">MySQL</ulink>,
140 <xref linkend="openldap"/>,
141 <xref linkend="postgresql"/>,
142 <xref linkend="sqlite"/>,
143 <xref linkend="unixodbc"/>,
144 <ulink url="http://www.softwareag.com/">Adabas</ulink>,
145 <ulink url="http://www.birdstep.com/">Birdstep</ulink>,
146 <ulink url="http://cr.yp.to/cdb.html">cdb</ulink>,
147 <ulink url="http://www.dbmaker.com/">DBMaker</ulink>,
148 <ulink url="http://www.empress.com/">Empress</ulink>,
149 <ulink url="http://www.frontbase.com/cgi-bin/WebObjects/FBWebSite">FrontBase</ulink>,
150 <ulink url="http://www.hughes.com.au/products/msql/">Mini SQL</ulink>,
151 <ulink url="http://www.monetra.com/">Monetra</ulink>, and
152 <ulink url="http://sourceforge.net/projects/qdbm">QDBM</ulink>
153 </para>
154
155 <para>
156 <application>PHP</application> also provides support for many
157 commercial database tools such as <application>Oracle</application>,
158 <application>SAP</application> and
159 <application>ODBC Router</application>.
160 </para>
161
162 <bridgehead renderas="sect4">Optional Security/Encryption Utilities and Libraries</bridgehead>
163 <para role="optional">
164 <xref linkend="openssl"/>,
165 <xref linkend="cyrus-sasl"/>,
166 <xref linkend="mitkrb"/>,
167 <ulink url="http://mcrypt.sourceforge.net/">libmcrypt</ulink>, and
168 <ulink url="http://mhash.sourceforge.net/">mhash</ulink>
169 </para>
170
171 <para condition="html" role="usernotes">
172 User Notes: <ulink url="&blfs-wiki;/php"/>
173 </para>
174
175 </sect2>
176
177 <sect2 role="installation">
178 <title>Installation of PHP</title>
179
180 <para>
181 You can use <application>PHP</application> for server-side
182 scripting, command-line scripting or client-side GUI applications. This
183 book provides instructions for setting up <application>PHP</application>
184 for server-side scripting as it is the most common form.
185 </para>
186
187 <note>
188 <para>
189 <application>PHP</application> has many more
190 <command>configure</command> options that will enable support for
191 various things. You can use <command>./configure --help</command> to
192 see a full list of the available options. Also, use of the
193 <ulink url="http://www.php.net/">PHP web site</ulink>
194 is highly recommended, as their online docs are very good. An example
195 of a <command>configure</command> command that utilizes many of the
196 most common dependencies can be found at <ulink
197 url="&sources-anduin-http;/files/php_configure.txt"/>.
198 </para>
199
200 <para>
201 If, for whatever reason, you don't have <xref linkend="libxml2"/>
202 installed, you need to add <option>--disable-libxml</option> to the
203 <command>configure</command> command in the instructions below. Note
204 that this will prevent the <command>pear</command> command from being
205 built.
206 </para>
207 </note>
208
209 <para>
210 If you wish to build <application>PHP</application> with the
211 <application>tidy-html5</application> library, due to API changes, in the
212 <application>PHP</application> source, <filename>buffio.h</filename>
213 header needs to be changed to <filename>tidybuffio.h</filename> in the
214 file <filename>ext/tidy/tidy.c</filename>:
215 </para>
216
217<screen><userinput>sed -i 's/buffio.h/tidy&amp;/' ext/tidy/*.c</userinput></screen>
218
219 <para>
220 Install <application>PHP</application> by running the following commands:
221 </para>
222
223<screen><userinput>./configure --prefix=/usr \
224 --sysconfdir=/etc \
225 --localstatedir=/var \
226 --datadir=/usr/share/php \
227 --mandir=/usr/share/man \
228 --enable-fpm \
229 --with-fpm-user=apache \
230 --with-fpm-group=apache \
231 --with-config-file-path=/etc \
232 --with-zlib \
233 --enable-bcmath \
234 --with-bz2 \
235 --enable-calendar \
236 --enable-dba=shared \
237 --with-gdbm \
238 --with-gmp \
239 --enable-ftp \
240 --with-gettext \
241 --enable-mbstring \
242 --with-readline &amp;&amp;
243make</userinput></screen>
244
245 <para>
246 To test the results, issue: <command>make test</command>. A few
247 tests may fail, in which case you are asked whether you want to send
248 the report to the PHP developpers. If you want to automate the test,
249 you may prefix the command with <command>yes "n" | </command>.
250 </para>
251
252 <para>
253 Now, as the <systemitem class="username">root</systemitem> user:
254 </para>
255
256<!-- dev note: make INSTALL_ROOT=<DESTDIR> install -->
257
258<screen role="root"><userinput>make install &amp;&amp;
259install -v -m644 php.ini-production /etc/php.ini &amp;&amp;
260mv -v /etc/php-fpm.conf{.default,} &amp;&amp;
261
262install -v -m755 -d /usr/share/doc/php-&php-version; &amp;&amp;
263install -v -m644 CODING_STANDARDS EXTENSIONS INSTALL NEWS README* UPGRADING* php.gif \
264 /usr/share/doc/php-&php-version; &amp;&amp;
265ln -v -sfn /usr/lib/php/doc/Archive_Tar/docs/Archive_Tar.txt \
266 /usr/share/doc/php-&php-version; &amp;&amp;
267ln -v -sfn /usr/lib/php/doc/Structures_Graph/docs \
268 /usr/share/doc/php-&php-version;</userinput></screen>
269
270 <para>
271 The pre-built HTML documentation is packaged in two forms: a tarball
272 containing many individual files, useful for quick loading into your
273 browser, and one large individual file, which is useful for using the
274 search utility of your browser. If you downloaded either, or both, of the
275 documentation files, issue the following commands as the
276 <systemitem class='username'>root</systemitem> user to install them (note
277 these instructions assume English docs, modify the tarball names below if
278 necessary).
279 </para>
280
281 <para>
282 For the <quote>Single HTML</quote> file:
283 </para>
284
285<screen role="root"><userinput>install -v -m644 ../php_manual_en.html.gz \
286 /usr/share/doc/php-&php-version; &amp;&amp;
287gunzip -v /usr/share/doc/php-&php-version;/php_manual_en.html.gz</userinput></screen>
288
289 <para>
290 For the <quote>Many HTML files</quote> tarball:
291 </para>
292
293<screen role="root"><userinput>tar -xvf ../php_manual_en.tar.gz \
294 -C /usr/share/doc/php-&php-version; --no-same-owner</userinput></screen>
295
296 </sect2>
297
298 <sect2 role="commands">
299 <title>Command Explanations</title>
300
301 <para>
302 <parameter>--with-datadir=/usr/share/php</parameter>: This works
303 around a bug in the build machinery, which installs some data to a
304 wrong location.
305 </para>
306
307 <para>
308 <parameter>--enable-fpm</parameter>: This parameter allows
309 building the fastCGI Process Manager.
310 </para>
311
312 <para>
313 <parameter>--with-config-file-path=/etc</parameter>: This parameter
314 makes <application>PHP</application> look for the
315 <filename>php.ini</filename> configuration file in
316 <filename class='directory'>/etc</filename>.
317 </para>
318
319 <para>
320 <parameter>--with-zlib</parameter>: This parameter adds
321 support for <application>Zlib</application> compression.
322 </para>
323
324 <para>
325 <parameter>--enable-bcmath</parameter>: Enables
326 <command>bc</command> style precision math functions.
327 </para>
328
329 <para>
330 <parameter>--with-bz2</parameter>: Adds support for
331 <application>Bzip2</application> compression functions.
332 </para>
333
334 <para>
335 <parameter>--enable-calendar</parameter>: This parameter
336 provides support for calendar conversion.
337 </para>
338
339 <para>
340 <parameter>--enable-dba=shared</parameter>: This parameter enables
341 support for database (dbm-style) abstraction layer functions.
342 </para>
343
344 <para>
345 <parameter>--enable-ftp</parameter>: This parameter
346 enables FTP functions.
347 </para>
348
349 <para>
350 <parameter>--with-gettext</parameter>: Enables functions
351 that use <application>Gettext</application> text translation.
352 </para>
353
354 <para>
355 <parameter>--enable-mbstring</parameter>: This parameter
356 enables multibyte string support.
357 </para>
358
359 <para>
360 <parameter>--with-readline</parameter>: This parameter
361 enables command line <application>Readline</application> support.
362 </para>
363
364 <para>
365 <option>--disable-libxml</option>: This option
366 allows building PHP without <application>libxml2</application>
367 installed.
368 </para>
369
370 <para>
371 <option>--with-apxs2</option>: Instead of building the fastCGI process
372 manager, it is possible to build an <application>apache</application>
373 module. This has some performance penalty for heavy loaded servers,
374 but may be easier to set up. This switch is incompatible with the
375 <parameter>--enable-fpm</parameter> and
376 <parameter>--with-fpm-...</parameter> switches.
377 </para>
378
379 <para>
380 <option>--with-mysqli=shared</option>: This option includes MySQLi
381 support.
382 </para>
383
384 <para>
385 <option>--with-mysql-sock=/run/mysqld/mysqld.sock</option>: Location of
386 the MySQL unix socket pointer.
387 </para>
388
389 <para>
390 <option>--with-pdo-mysql=shared</option>: This option includes PDO:
391 MySQL support.
392 </para>
393
394 <para>
395 <option>--with-tidy=shared</option>: This option includes tidy library
396 support.
397 </para>
398
399 </sect2>
400
401 <sect2 role="configuration">
402 <title>Configuring PHP</title>
403
404 <sect3 id="php-config">
405 <title>Config Files</title>
406
407 <para>
408 <filename>/etc/php.ini</filename>,
409 <filename>/etc/pear.conf</filename>,
410 <filename>/etc/php-fpm.conf</filename>, and
411 <filename>/etc/php-fpm.d/www.conf</filename>
412 </para>
413
414 <indexterm zone="php php-config">
415 <primary sortas="e-etc-php.ini">/etc/php.ini</primary>
416 </indexterm>
417
418 <indexterm zone="php php-config">
419 <primary sortas="e-etc-pear.conf">/etc/pear.conf</primary>
420 </indexterm>
421
422 <indexterm zone="php php-config">
423 <primary sortas="e-etc-php-fpm.d-www.conf">
424 /etc/php-fpm.d/www.conf</primary>
425 </indexterm>
426
427 <indexterm zone="php php-config">
428 <primary sortas="e-etc-php-fpm.conf">/etc/php-fpm.conf</primary>
429 </indexterm>
430
431 </sect3>
432
433 <sect3>
434 <title>Configuration Information</title>
435
436 <para>
437 Without the file <filename>/etc/php-fpm.d/www.conf</filename>,
438 the process manager does not start. However, it is the file
439 <filename>/etc/php-fpm.d/www.conf.default</filename>, that is
440 installed. To solve this, issue as the
441 <systemitem class="username">root</systemitem> user:
442 </para>
443
444<screen role="root"><userinput>cp -v /etc/php-fpm.d/www.conf.default /etc/php-fpm.d/www.conf</userinput></screen>
445
446 <para>
447 The file used as the default <filename>/etc/php.ini</filename>
448 configuration file is recommended by the <application>PHP</application>
449 development team. This file modifies the default behavior of
450 <application>PHP</application>. If no <filename>/etc/php.ini</filename>
451 is used, all configuration settings fall to the defaults. You should
452 review the comments in this file and ensure the changes are acceptable
453 in your particular environment.
454 </para>
455
456 <para>
457 You may have noticed the following from the output of the
458 <command>make install</command> command:
459 </para>
460
461<screen><computeroutput>You may want to add: /usr/lib/php to your php.ini include_path</computeroutput></screen>
462
463 <para>
464 If desired, add the entry using the following command as the
465 <systemitem class="username">root</systemitem> user:
466 </para>
467
468<screen role="root"><userinput>sed -i 's@php/includes"@&amp;\ninclude_path = ".:/usr/lib/php"@' \
469 /etc/php.ini</userinput></screen>
470
471 <para>
472 To enable fastCGI support in the <application>Apache</application>
473 web server, two LoadModule directives must be added to the
474 <filename>httpd.conf</filename> file. They are commented out, so just
475 issue the following command as
476 <systemitem class="username">root</systemitem> user:
477 </para>
478
479<screen role="root"><userinput>sed -i -e '/proxy_module/s/^#//' \
480 -e '/proxy_fcgi_module/s/^#//' \
481 /etc/httpd/httpd.conf</userinput></screen>
482
483 <para>
484 Those modules accept various <command>ProxyPass</command>
485 directives. One possibility is (as the
486 <systemitem class="username">root</systemitem> user):
487 </para>
488
489<screen role="root"><userinput>echo \
490'ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/srv/www/$1' >> \
491/etc/httpd/httpd.conf</userinput></screen>
492
493 <para>
494 Additionally, it may be useful to add an entry for
495 <filename>index.php</filename> to the DirectoryIndex directive of the
496 <filename>httpd.conf</filename> file. Lastly, adding a line to setup the
497 <filename class='extension'>.phps</filename> extension to show
498 highlighted <application>PHP</application> source may be
499 desirable:
500 </para>
501
502<screen><literal>AddType application/x-httpd-php-source .phps</literal></screen>
503
504 <para>
505 You'll need to restart the <application>Apache</application> web server
506 after making any modifications to the <filename>httpd.conf</filename>
507 file.
508 </para>
509
510 </sect3>
511
512 <sect3 id="php-init">
513 <title>Boot Script</title>
514
515 <para revision="sysv">
516 To automatically start the <command>php-fpm</command> daemon when the
517 system is rebooted, install the
518 <filename>/etc/rc.d/init.d/php</filename> bootscript from the
519 <xref linkend="bootscripts"/> package as the
520 <systemitem class="username">root</systemitem> user:
521 </para>
522
523 <para revision="systemd">
524 To automatically start the <command>php-fpm</command> daemon when the
525 system is rebooted, install the <filename>php-fpm.service</filename>
526 unit from the <xref linkend="systemd-units"/> package as the
527 <systemitem class="username">root</systemitem> user:
528 </para>
529
530
531 <indexterm zone="php php-init">
532 <primary sortas="f-php">php</primary>
533 </indexterm>
534
535<screen role="root" revision="sysv"><userinput>make install-php</userinput></screen>
536
537<screen role="root" revision="systemd"><userinput>make install-php-fpm</userinput></screen>
538
539 </sect3>
540
541 </sect2>
542
543 <sect2 role="content">
544 <title>Contents</title>
545
546 <segmentedlist>
547 <segtitle>Installed Programs</segtitle>
548 <segtitle>Installed Libraries</segtitle>
549 <segtitle>Installed Directories</segtitle>
550
551 <seglistitem>
552 <seg>pear, peardev, pecl, phar (symlink), phar.phar, php,
553 php-cgi, php-config, php-fpm, phpdbg, and phpize</seg>
554 <seg>dba.{so,a} and opcache.{so,a} at
555 /usr/lib/php/extensions/no-debug-non-zts-20151012</seg>
556 <seg>/etc/php-fpm.d, /usr/{include,lib,share}/php and
557 /usr/share/doc/php-&php-version;</seg>
558 </seglistitem>
559 </segmentedlist>
560
561 <variablelist>
562 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
563 <?dbfo list-presentation="list"?>
564 <?dbhtml list-presentation="table"?>
565
566 <varlistentry id="php-prog">
567 <term><command>php</command></term>
568 <listitem>
569 <para>
570 is a command line interface that enables you to parse and
571 execute PHP code.
572 </para>
573 <indexterm zone="php php-prog">
574 <primary sortas="b-php">php</primary>
575 </indexterm>
576 </listitem>
577 </varlistentry>
578
579 <varlistentry id="pear">
580 <term><command>pear</command></term>
581 <listitem>
582 <para>
583 is the PHP Extension and Application Repository (PEAR) package
584 manager.
585 </para>
586 <indexterm zone="php pear">
587 <primary sortas="b-pear">pear</primary>
588 </indexterm>
589 </listitem>
590 </varlistentry>
591
592 <varlistentry id="php-fpm">
593 <term><command>php-fpm</command></term>
594 <listitem>
595 <para>
596 is the fastCGI process manager for PHP.
597 </para>
598 <indexterm zone="php php-fpm">
599 <primary sortas="b-php-fpm">php-fpm</primary>
600 </indexterm>
601 </listitem>
602 </varlistentry>
603
604 <varlistentry id="phpdbg">
605 <term><command>phpdbg</command></term>
606 <listitem>
607 <para>
608 is the interactive PHP debugger.
609 </para>
610 <indexterm zone="php phpdbg">
611 <primary sortas="b-phpdbg">phpdbg</primary>
612 </indexterm>
613 </listitem>
614 </varlistentry>
615
616 </variablelist>
617
618 </sect2>
619
620</sect1>
Note: See TracBrowser for help on using the repository browser.