source: general/prog/php.xml@ 595e58e

10.0 10.1 11.0 11.1 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind lazarus perl-modules qt5new trunk upgradedb xry111/intltool xry111/test-20220226
Last change on this file since 595e58e was 595e58e, checked in by Bruce Dubbs <bdubbs@…>, 5 years ago

Update to ghostscript-9.21.
Update to xfwm4-4.12.4.
Update to php-7.1.3.
Update to libpng-1.6.29.

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

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