source: general/prog/php.xml@ 0c54cea

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 7.10 7.9 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 0c54cea was 0c54cea, checked in by Fernando de Oliveira <fernando@…>, 8 years ago
  • biblatex-biber-2.3: replace parameter by command tags in Command Explanations.
  • Update to giflib-5.1.2.
  • Update to librsvg-2.40.13.
  • Update to URI-1.71 (perl module).
  • Update to Regexp-Common-2016010701 (perl module).
  • Update to php-7.0.2.
  • Update to dhcpcd-6.10.0.
  • Update to ntp-4.2.8p5.

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

  • Property mode set to 100644
File size: 20.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-download-ftp " ">
10 <!ENTITY php-md5sum "ce5964672e4ec0b66ff088a6bafde8c7">
11 <!ENTITY php-size "11 MB">
12 <!ENTITY php-buildsize "564 MB (with the tests). Documentation adds 106 MB">
13 <!ENTITY php-time "6.3 SBU (with the 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 &lfs78_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>,
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="html-tidy"/>,
128 <ulink url="http://sourceforge.net/projects/caudium/">Caudium</ulink>,
129 <ulink url="http://www.hyperwave.com/">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"/>,
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/">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 Install <application>PHP</application> by running the following commands:
210 </para>
211
212<screen><userinput>./configure --prefix=/usr \
213 --sysconfdir=/etc \
214 --localstatedir=/var \
215 --datadir=/usr/share/php \
216 --mandir=/usr/share/man \
217 --enable-fpm \
218 --with-fpm-user=apache \
219 --with-fpm-group=apache \
220 --with-config-file-path=/etc \
221 --with-zlib \
222 --enable-bcmath \
223 --with-bz2 \
224 --enable-calendar \
225 --enable-dba=shared \
226 --with-gdbm \
227 --with-gmp \
228 --enable-ftp \
229 --with-gettext \
230 --enable-mbstring \
231 --with-readline &amp;&amp;
232make</userinput></screen>
233
234 <para>
235 To test the results, issue: <command>make test</command>. A few
236 tests may fail, in which case you are asked whether you want to send
237 the report to the PHP developpers. If you want to automate the test,
238 you may prefix the command with <command>yes "n" | </command>.
239 </para>
240
241 <para>
242 Now, as the <systemitem class="username">root</systemitem> user:
243 </para>
244
245<!-- dev note: make INSTALL_ROOT=<DESTDIR> install -->
246
247<screen role="root"><userinput>make install &amp;&amp;
248install -v -m644 php.ini-production /etc/php.ini &amp;&amp;
249mv -v /etc/php-fpm.conf{.default,} &amp;&amp;
250
251install -v -m755 -d /usr/share/doc/php-&php-version; &amp;&amp;
252install -v -m644 CODING_STANDARDS EXTENSIONS INSTALL NEWS README* UPGRADING* php.gif \
253 /usr/share/doc/php-&php-version; &amp;&amp;
254ln -v -sfn /usr/lib/php/doc/Archive_Tar/docs/Archive_Tar.txt \
255 /usr/share/doc/php-&php-version; &amp;&amp;
256ln -v -sfn /usr/lib/php/doc/Structures_Graph/docs \
257 /usr/share/doc/php-&php-version;</userinput></screen>
258
259 <para>
260 The pre-built HTML documentation is packaged in two forms: a tarball
261 containing many individual files, useful for quick loading into your
262 browser, and one large individual file, which is useful for using the
263 search utility of your browser. If you downloaded either, or both, of the
264 documentation files, issue the following commands as the
265 <systemitem class='username'>root</systemitem> user to install them (note
266 these instructions assume English docs, modify the tarball names below if
267 necessary).
268 </para>
269
270 <para>
271 For the <quote>Single HTML</quote> file:
272 </para>
273
274<screen role="root"><userinput>install -v -m644 ../php_manual_en.html.gz \
275 /usr/share/doc/php-&php-version; &amp;&amp;
276gunzip -v /usr/share/doc/php-&php-version;/php_manual_en.html.gz</userinput></screen>
277
278 <para>
279 For the <quote>Many HTML files</quote> tarball:
280 </para>
281
282<screen role="root"><userinput>tar -xvf ../php_manual_en.tar.gz \
283 -C /usr/share/doc/php-&php-version; --no-same-owner</userinput></screen>
284
285 </sect2>
286
287 <sect2 role="commands">
288 <title>Command Explanations</title>
289
290 <para>
291 <parameter>--with-datadir=/usr/share/php</parameter>: This works
292 around a bug in the build machinery, which installs some data to a
293 wrong location.
294 </para>
295
296 <para>
297 <parameter>--enable-fpm</parameter>: This parameter allows
298 building the fastCGI Process Manager.
299 </para>
300
301 <para>
302 <parameter>--with-config-file-path=/etc</parameter>: This parameter
303 makes <application>PHP</application> look for the
304 <filename>php.ini</filename> configuration file in
305 <filename class='directory'>/etc</filename>.
306 </para>
307
308 <para>
309 <parameter>--with-zlib</parameter>: This parameter adds
310 support for <application>Zlib</application> compression.
311 </para>
312
313 <para>
314 <parameter>--enable-bcmath</parameter>: Enables
315 <command>bc</command> style precision math functions.
316 </para>
317
318 <para>
319 <parameter>--with-bz2</parameter>: Adds support for
320 <application>Bzip2</application> compression functions.
321 </para>
322
323 <para>
324 <parameter>--enable-calendar</parameter>: This parameter
325 provides support for calendar conversion.
326 </para>
327
328 <para>
329 <parameter>--enable-dba=shared</parameter>: This parameter enables
330 support for database (dbm-style) abstraction layer functions.
331 </para>
332
333 <para>
334 <parameter>--enable-ftp</parameter>: This parameter
335 enables FTP functions.
336 </para>
337
338 <para>
339 <parameter>--with-gettext</parameter>: Enables functions
340 that use <application>Gettext</application> text translation.
341 </para>
342
343 <para>
344 <parameter>--enable-mbstring</parameter>: This parameter
345 enables multibyte string support.
346 </para>
347
348 <para>
349 <parameter>--with-readline</parameter>: This parameter
350 enables command line <application>Readline</application> support.
351 </para>
352
353 <para>
354 <option>--disable-libxml</option>: This option
355 allows building PHP without <application>libxml2</application>
356 installed.
357 </para>
358
359 <para>
360 <option>--with-apxs2</option>: Instead of building the fastCGI process
361 manager, it is possible to build an <application>apache</application>
362 module. This has some performance penalty for heavy loaded servers,
363 but may be easier to set up. This switch is incompatible with the
364 <parameter>--enable-fpm</parameter> and
365 <parameter>--with-fpm-...</parameter> switches.
366 </para>
367
368 <para>
369 <option>--with-mysqli=/usr/bin/mysql_config</option>: This option
370 includes MySQLi support.
371 </para>
372
373 <para>
374 <option>--with-mysql-sock=/run/mysqld/mysqld.sock</option>: Location of
375 the MySQL unix socket pointer.
376 </para>
377
378 <para>
379 <option>--with-pdo-mysql=/usr</option>: This option includes PDO: MySQL
380 support.
381 </para>
382
383 </sect2>
384
385 <sect2 role="configuration">
386 <title>Configuring PHP</title>
387
388 <sect3 id="php-config">
389 <title>Config Files</title>
390
391 <para>
392 <filename>/etc/php.ini</filename>,
393 <filename>/etc/pear.conf</filename>,
394 <filename>/etc/php-fpm.conf</filename>, and
395 <filename>/etc/php-fpm.d/www.conf</filename>
396 </para>
397
398 <indexterm zone="php php-config">
399 <primary sortas="e-etc-php.ini">/etc/php.ini</primary>
400 </indexterm>
401
402 <indexterm zone="php php-config">
403 <primary sortas="e-etc-pear.conf">/etc/pear.conf</primary>
404 </indexterm>
405
406 <indexterm zone="php php-config">
407 <primary sortas="e-etc-php-fpm.d-www.conf">
408 /etc/php-fpm.d/www.conf</primary>
409 </indexterm>
410
411 <indexterm zone="php php-config">
412 <primary sortas="e-etc-php-fpm.conf">/etc/php-fpm.conf</primary>
413 </indexterm>
414
415 </sect3>
416
417 <sect3>
418 <title>Configuration Information</title>
419
420 <para>
421 Without the file <filename>/etc/php-fpm.d/www.conf</filename>,
422 the process manager does not start. However, it is the file
423 <filename>/etc/php-fpm.d/www.conf.default</filename>, that is
424 installed. To solve this, issue as the
425 <systemitem class="username">root</systemitem> user:
426 </para>
427
428<screen role="root"><userinput>cp -v /etc/php-fpm.d/www.conf.default /etc/php-fpm.d/www.conf</userinput></screen>
429
430 <para>
431 The file used as the default <filename>/etc/php.ini</filename>
432 configuration file is recommended by the <application>PHP</application>
433 development team. This file modifies the default behavior of
434 <application>PHP</application>. If no <filename>/etc/php.ini</filename>
435 is used, all configuration settings fall to the defaults. You should
436 review the comments in this file and ensure the changes are acceptable
437 in your particular environment.
438 </para>
439
440 <para>
441 You may have noticed the following from the output of the
442 <command>make install</command> command:
443 </para>
444
445<screen><computeroutput>You may want to add: /usr/lib/php to your php.ini include_path</computeroutput></screen>
446
447 <para>
448 If desired, add the entry using the following command as the
449 <systemitem class="username">root</systemitem> user:
450 </para>
451
452<screen role="root"><userinput>sed -i 's@php/includes"@&amp;\ninclude_path = ".:/usr/lib/php"@' \
453 /etc/php.ini</userinput></screen>
454
455 <para>
456 To enable fastCGI support in the <application>Apache</application>
457 web server, two LoadModule directives must be added to the
458 <filename>httpd.conf</filename> file. They are commented out, so just
459 issue the following command as
460 <systemitem class="username">root</systemitem> user:
461 </para>
462
463<screen role="root"><userinput>sed -i -e '/proxy_module/s/^#//' \
464 -e '/proxy_fcgi_module/s/^#//' \
465 /etc/httpd/httpd.conf</userinput></screen>
466
467 <para>
468 Those modules accept various <command>ProxyPass</command>
469 directives. One possibility is (as the
470 <systemitem class="username">root</systemitem> user):
471 </para>
472
473<screen role="root"><userinput>echo \
474'ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/srv/www/$1' >> \
475/etc/httpd/httpd.conf</userinput></screen>
476
477 <para>
478 Additionally, it may be useful to add an entry for
479 <filename>index.php</filename> to the DirectoryIndex directive of the
480 <filename>httpd.conf</filename> file. Lastly, adding a line to setup the
481 <filename class='extension'>.phps</filename> extension to show
482 highlighted <application>PHP</application> source may be
483 desirable:
484 </para>
485
486<screen><literal>AddType application/x-httpd-php-source .phps</literal></screen>
487
488 <para>
489 You'll need to restart the <application>Apache</application> web server
490 after making any modifications to the <filename>httpd.conf</filename>
491 file.
492 </para>
493
494 </sect3>
495
496 <sect3 id="php-init">
497 <title>Boot Script</title>
498
499 <para>
500 To automatically start the <command>php-fpm</command> daemon when the
501 system is rebooted, install the
502 <filename>/etc/rc.d/init.d/php</filename> bootscript from the
503 <xref linkend="bootscripts"/> package as the
504 <systemitem class="username">root</systemitem> user:
505 </para>
506
507 <indexterm zone="php php-init">
508 <primary sortas="f-php">php</primary>
509 </indexterm>
510
511<screen role="root"><userinput>make install-php</userinput></screen>
512 </sect3>
513
514 </sect2>
515
516 <sect2 role="content">
517 <title>Contents</title>
518
519 <segmentedlist>
520 <segtitle>Installed Programs</segtitle>
521 <segtitle>Installed Libraries</segtitle>
522 <segtitle>Installed Directories</segtitle>
523
524 <seglistitem>
525 <seg>pear, peardev, pecl, phar (symlink), phar.phar, php,
526 php-cgi, php-config, php-fpm, phpdbg, and phpize</seg>
527 <seg>dba.{so,a} and opcache.{so,a} at
528 /usr/lib/php/extensions/no-debug-non-zts-20151012</seg>
529 <seg>/etc/php-fpm.d, /usr/{include,lib,share}/php and
530 /usr/share/doc/php-&php-version;</seg>
531 </seglistitem>
532 </segmentedlist>
533
534 <variablelist>
535 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
536 <?dbfo list-presentation="list"?>
537 <?dbhtml list-presentation="table"?>
538
539 <varlistentry id="php-prog">
540 <term><command>php</command></term>
541 <listitem>
542 <para>
543 is a command line interface that enables you to parse and
544 execute PHP code.
545 </para>
546 <indexterm zone="php php-prog">
547 <primary sortas="b-php">php</primary>
548 </indexterm>
549 </listitem>
550 </varlistentry>
551
552 <varlistentry id="pear">
553 <term><command>pear</command></term>
554 <listitem>
555 <para>
556 is the PHP Extension and Application Repository (PEAR) package
557 manager.
558 </para>
559 <indexterm zone="php pear">
560 <primary sortas="b-pear">pear</primary>
561 </indexterm>
562 </listitem>
563 </varlistentry>
564
565 <varlistentry id="php-fpm">
566 <term><command>php-fpm</command></term>
567 <listitem>
568 <para>
569 is the fastCGI process manager for PHP.
570 </para>
571 <indexterm zone="php php-fpm">
572 <primary sortas="b-php-fpm">php-fpm</primary>
573 </indexterm>
574 </listitem>
575 </varlistentry>
576
577 <varlistentry id="phpdbg">
578 <term><command>phpdbg</command></term>
579 <listitem>
580 <para>
581 is the interactive PHP debugger.
582 </para>
583 <indexterm zone="php phpdbg">
584 <primary sortas="b-phpdbg">phpdbg</primary>
585 </indexterm>
586 </listitem>
587 </varlistentry>
588
589 </variablelist>
590
591 </sect2>
592
593</sect1>
Note: See TracBrowser for help on using the repository browser.