Difference between revisions of "PHP"

From CBLFS
Jump to navigationJump to search
m (Non-Multilib)
(32Bit: Fixed a bit of dubious wording)
 
(18 intermediate revisions by 9 users not shown)
Line 7: Line 7:
 
----
 
----
  
{{Package-Introduction|PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.}}
+
{{Package-Introduction|PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.|http://www.php.net/}}
  
 
== Warning: ==
 
== Warning: ==
Line 22: Line 22:
 
=== Optional ===
 
=== Optional ===
 
* [[libjpeg]]
 
* [[libjpeg]]
 +
* [[libmcrypt]]
 
* [[GDBM]]
 
* [[GDBM]]
 
* [[OpenSSL]]
 
* [[OpenSSL]]
 
* [[OpenLDAP]]
 
* [[OpenLDAP]]
 
* [[MySQL]]
 
* [[MySQL]]
 +
* [[GD]]
  
 
== Configuration Information ==
 
== Configuration Information ==
Line 32: Line 34:
  
 
If you use Apache 1 then you must use --with-apxs instead --with-apxs2
 
If you use Apache 1 then you must use --with-apxs instead --with-apxs2
 +
 +
If you want use Libmcrypt then you must add --with-mcrypt to the configure script
 +
 +
 +
{{Note|PHP does not use ''DESTDIR'', it uses ''INSTALL_ROOT'' for the same purpose.  Use ''INSTALL_ROOT'' as you would normally use ''DESTDIR''. There are some errors that are safe to ignore. It also will fail if it does not find a valid httpd.conf in the < DIRECTORY >etc/apache folder. one way to fix this is
 +
install -d <DIRECTORY>/etc/apache
 +
&& cp /etc/apache/httpd.conf <DIRECTOR>/etc/apache/
 +
or figure out a way to fake the httpd.conf. remember to deal with the new data in httpd.conf with your installer}}
 +
 +
{{Note|There are some reproducable problems with PHP on both x86 and x86_64 architecture when compiling with GCC4 and '''-O3''' optimization (see for example <nowiki>http://bugs.gentoo.org/show_bug.cgi?id=211611</nowiki>, there are more).}}
  
 
== Non-Multilib ==
 
== Non-Multilib ==
Line 39: Line 51:
 
  ./configure --prefix=/usr --sysconfdir=/etc/php \
 
  ./configure --prefix=/usr --sysconfdir=/etc/php \
 
     --libdir=/usr/lib --localstatedir=/var \
 
     --libdir=/usr/lib --localstatedir=/var \
     --with-apxs2=/usr/sbin/apxs --with-mysql &&
+
     --with-apxs2=/usr/sbin/apxs --with-mysql \
 +
    --with-layout=GNU &&
 
  make
 
  make
  
Line 45: Line 58:
  
 
  make install
 
  make install
  cp php.ini-recommended /etc/php/php.ini
+
  cp php.ini-production /etc/php/php.ini
  
 
The install script changes your Apache configuration and adds the entry: "LoadModule php{{PHP-Version2}}_module  lib/apache/libphp{{PHP-Version2}}.so".  But it forgets to set the mime application type. Open /etc/apache/httpd.conf and add following line in the <IfModule mime_module> section:
 
The install script changes your Apache configuration and adds the entry: "LoadModule php{{PHP-Version2}}_module  lib/apache/libphp{{PHP-Version2}}.so".  But it forgets to set the mime application type. Open /etc/apache/httpd.conf and add following line in the <IfModule mime_module> section:
Line 65: Line 78:
 
  </head>
 
  </head>
 
  <body>
 
  <body>
  <?
+
  <?php
 
  phpinfo();
 
  phpinfo();
 
  ?>
 
  ?>
Line 82: Line 95:
  
 
  CC="gcc ${BUILD32}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" USE_ARCH=32 \
 
  CC="gcc ${BUILD32}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" USE_ARCH=32 \
  ./configure --prefix=/usr --sysconfdir=/etc/php --libdir=/usr/lib --localstatedir=/var \
+
  ./configure --prefix=/usr --sysconfdir=/etc/php --libdir=/usr/lib \
--with-apxs2=/usr/sbin/apxs --with-mysql
+
    --localstatedir=/var --with-apxs2=/usr/sbin/apxs --with-mysql \
  make &&
+
    --with-layout=GNU &&
 +
  make
  
 
Install the package:
 
Install the package:
  
  make install
+
  make install &&
  mv -v /usr/bin/php-config{,-32}
+
  mv -v /usr/bin/php-config{,-32} &&
  cp php.ini-recommended /etc/php/php.ini
+
  cp php.ini-production /etc/php/php.ini
  
 
The installscript change your Apache config and add the entry: "LoadModule php{{PHP-Version2}}_module  lib/apache/libphp{{PHP-Version2}}.so"
 
The installscript change your Apache config and add the entry: "LoadModule php{{PHP-Version2}}_module  lib/apache/libphp{{PHP-Version2}}.so"
Line 104: Line 118:
  
  
If you build also a 64Bit PHP, you must:
+
If you also choose to build a 64Bit PHP, you must:
 
   
 
   
 
  rm -f /etc/php/pear.conf
 
  rm -f /etc/php/pear.conf
Line 115: Line 129:
  
 
  CC="gcc ${BUILD64}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" USE_ARCH=64 MYSQL_LIB_DIR=/usr/lib64 \
 
  CC="gcc ${BUILD64}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" USE_ARCH=64 MYSQL_LIB_DIR=/usr/lib64 \
  ./configure --prefix=/usr --sysconfdir=/etc/php --libdir=/usr/lib64 --localstatedir=/var \
+
  ./configure --prefix=/usr --sysconfdir=/etc/php \
--with-apxs2=/usr/sbin/apxs --with-mysql &&
+
    --libdir=/usr/lib64 --localstatedir=/var \
 +
    --with-apxs2=/usr/sbin/apxs --with-mysql \
 +
    --with-layout=GNU &&
 
  make
 
  make
  
Line 124: Line 140:
 
  mv -v /usr/bin/php-config{,-64}
 
  mv -v /usr/bin/php-config{,-64}
 
  ln -sfv multiarch_wrapper /usr/bin/php-config
 
  ln -sfv multiarch_wrapper /usr/bin/php-config
  cp php.ini-recommended /etc/php/php.ini
+
  cp php.ini-production /etc/php/php.ini
  
 
The installscript change your Apache config and add the entry: "LoadModule php{{PHP-Version2}}_module  lib64/apache/libphp{{PHP-Version2}}.so"
 
The installscript change your Apache config and add the entry: "LoadModule php{{PHP-Version2}}_module  lib64/apache/libphp{{PHP-Version2}}.so"
Line 133: Line 149:
 
When you want start a site with php-code, you must add:
 
When you want start a site with php-code, you must add:
  
  IfModule dir_module>
+
  <IfModule dir_module>
 
     DirectoryIndex index.html index.php index.php3 index.htm
 
     DirectoryIndex index.html index.php index.php3 index.htm
 
  </IfModule>
 
  </IfModule>
Line 142: Line 158:
 
  LoadModule php{{PHP-Version2}}_module  lib64/apache/libphp{{PHP-Version2}}.so
 
  LoadModule php{{PHP-Version2}}_module  lib64/apache/libphp{{PHP-Version2}}.so
 
}}
 
}}
 +
 +
[[Category:Programming]]

Latest revision as of 11:34, 2 January 2011

Download Source: http://us2.php.net/get/php-5.3.2.tar.bz2/from/us.php.net/mirror

Introduction to PHP

PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.

Project Homepage: http://www.php.net/

Warning:

The PHP Developer team means:

"We do not recommend using a threaded MPM in production with Apache2. Use the prefork MPM instead, or use Apache1. For information on why, read the related FAQ entry on using Apache2 with a threaded MPM"[1]"

Dependencies

Required

Optional

Configuration Information

See the output of ./configure --help for many more configuration options.

If you use Apache 1 then you must use --with-apxs instead --with-apxs2

If you want use Libmcrypt then you must add --with-mcrypt to the configure script


Caution.png

Note

PHP does not use DESTDIR, it uses INSTALL_ROOT for the same purpose. Use INSTALL_ROOT as you would normally use DESTDIR. There are some errors that are safe to ignore. It also will fail if it does not find a valid httpd.conf in the < DIRECTORY >etc/apache folder. one way to fix this is

install -d <DIRECTORY>/etc/apache && cp /etc/apache/httpd.conf <DIRECTOR>/etc/apache/

or figure out a way to fake the httpd.conf. remember to deal with the new data in httpd.conf with your installer
Caution.png

Note

There are some reproducable problems with PHP on both x86 and x86_64 architecture when compiling with GCC4 and -O3 optimization (see for example http://bugs.gentoo.org/show_bug.cgi?id=211611, there are more).

Non-Multilib

Compile the package:

./configure --prefix=/usr --sysconfdir=/etc/php \
    --libdir=/usr/lib --localstatedir=/var \
    --with-apxs2=/usr/sbin/apxs --with-mysql \
    --with-layout=GNU &&
make

Install the package:

make install
cp php.ini-production /etc/php/php.ini

The install script changes your Apache configuration and adds the entry: "LoadModule php5_module lib/apache/libphp5.so". But it forgets to set the mime application type. Open /etc/apache/httpd.conf and add following line in the <IfModule mime_module> section:

AddType application/x-httpd-php .php .phtml .php3 .htm .html

When you want start a site with php-code, you must add:

<IfModule dir_module>
   DirectoryIndex index.html index.php index.php3 index.htm
</IfModule>

To test your PHP installation, try this:

cat > /srv/www/htdocs/phptest.php << "EOF"

 
 PHP-Testpage
 
 
 
  
 
EOF
/etc/rc.d/init.d/apache restart
lynx localhost/phptest.php

Multilib

32Bit

Compile the package:

CC="gcc ${BUILD32}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" USE_ARCH=32 \
./configure --prefix=/usr --sysconfdir=/etc/php --libdir=/usr/lib \
    --localstatedir=/var --with-apxs2=/usr/sbin/apxs --with-mysql \
    --with-layout=GNU &&
make

Install the package:

make install &&
mv -v /usr/bin/php-config{,-32} &&
cp php.ini-production /etc/php/php.ini

The installscript change your Apache config and add the entry: "LoadModule php5_module lib/apache/libphp5.so" But it forgets to set the mime applicationtype. So go to the /etc/apache/httpd.conf and add following line in the <IfModule mime_module> section:

AddType application/x-httpd-php .php .phtml .php3 .htm .html

When you want start a site with php-code, you must add:

IfModule dir_module>
   DirectoryIndex index.html index.php index.php3 index.htm
</IfModule>


If you also choose to build a 64Bit PHP, you must:

rm -f /etc/php/pear.conf

64Bit

Compile the package:

CC="gcc ${BUILD64}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" USE_ARCH=64 MYSQL_LIB_DIR=/usr/lib64 \
./configure --prefix=/usr --sysconfdir=/etc/php \
    --libdir=/usr/lib64 --localstatedir=/var \
    --with-apxs2=/usr/sbin/apxs --with-mysql \
    --with-layout=GNU &&
make

Install the package:

make install
mv -v /usr/bin/php-config{,-64}
ln -sfv multiarch_wrapper /usr/bin/php-config
cp php.ini-production /etc/php/php.ini

The installscript change your Apache config and add the entry: "LoadModule php5_module lib64/apache/libphp5.so" But it forgets to set the mime applicationtype. So go to the /etc/apache/httpd.conf and add the following line in the <IfModule mime_module> section:

AddType application/x-httpd-php .php .phtml .php3 .htm .html

When you want start a site with php-code, you must add:

<IfModule dir_module>
   DirectoryIndex index.html index.php index.php3 index.htm
</IfModule>
Caution.png

Note

If you have a 32bit Apache then make sure you have the following in httpd.conf:
LoadModule php5_module   lib/apache/libphp5.so

If you have a 64bit Apache then make sure you have the following in httpd.conf:

LoadModule php5_module   lib64/apache/libphp5.so
Retrieved from "?title=PHP&oldid=20943"