PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Lighttpd 1.4 (Unix システム用)> <Unix システムへのインストール
Last updated: Fri, 08 Aug 2008

view this page in

Apache 2.0 (Unixシステム用)

このセクションでは、PHPを Unix システム上の Apache 2.0 にインストールする際の 手引きと注意事項について説明します。

警告

Apache2 の MPM マルチスレッドモードを実運用環境で使用することは推奨されません。 代わりに prefork MPM または Apache1 を使用してください。その理由については、 マルチスレッド版 MPM の Apache2の FAQ エントリを参照してください。

» Apache ドキュメンテーション を参照し、Apache 2.0.x の基本的な事項について理解しておくことを 強く推奨します。

注意: PHP と Apache 2.0.x の互換性に関する注意
PHP の以下のバージョンは、Apache 2.0.x の最新版での動作が確認されています。

以上のバージョンの PHPは、Apache 2.0.40 以降と互換性があります。
Apache 2.0 SAPI のサポートは PHP 4.2.0 で開始されました。 PHP 4.2.3 は Apache 2.0.39 で動作します。PHP 4.2.3 を Apache の他のバージョンと 組み合わせて使用しないでください。 PHP 4.3.0 もしくはそれ以降のバージョンの PHP を 最新版の Apache2 と組み合わせて使用することが推奨されます。
ここで挙げたバージョンの PHP は、Apache 1.3.x でも動作します。

最新バージョンの » Apache 2.0 を ダウンロードし、上述のいずれかのバージョンの PHP を用意してください。 この手引きでは Apache 2.0 で PHP を動作させるための 基本的な部分しかカバーしていません。さらに詳しい情報については、» Apache ドキュメンテーション を参照してください。 情報が古く不正確になってしまうため、以下では詳細なバージョン番号は 記述されていません。'NN' という文字列をご使用のバージョンに適宜置き換えて ください。

例1 インストール手順 (Apache 2 共有モジュール版)

1.  gzip -d httpd-2_0_NN.tar.gz
2.  tar xvf httpd-2_0_NN.tar
3.  gunzip php-NN.tar.gz
4.  tar -xvf php-NN.tar
5.  cd httpd-2_0_NN
6.  ./configure --enable-so
7.  make
8.  make install

    以上で Apache 2.0.NN が、モジュールの動的ロードとデフォルトの
    MPM(マルチプロセッシングモジュール)である prefork が有効になった
    状態で、/usr/local/apache2 にインストールされます。
    
    インストールが正常か調べるには、以下のようにします。
      /usr/local/apache2/bin/apachectl start
    サーバの停止は、以下の通り。
      /usr/local/apache2/bin/apachectl stop
    
    引き続き PHP のセットアップを行います。

9.  cd ../php-NN
10. PHP の configure を行います。ここでは、様々なオプションを指定し、特定の
    拡張モジュールを有効にするといったカスタマイズを行います。指定可能な
    オプションの一覧は、./configure --help を実行すると得られます。以下に、
    Apache 2 と MySQL のサポートを有効にする、簡単な設定例を示します。
   
      ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql

11. make
12. make install

    configure オプションを変更して再インストールする場合は、最後の 3 つ
    の手順を繰り返します。共有モジュールとしてコンパイルされた PHP を
    有効にするには Apache を再起動するだけです。Apache の再コンパイルは
    必要ありません。

    特に断りがない限り、'make install' は、PEAR、phpize のような様々な 
    関連ツール、CLI 版 PHP などもインストールすることに注意してください。
    
13. php.ini ファイルを設定する
    
      cp php.ini-dist /usr/local/lib/php.ini
      
    PHP の実行時設定を変更するには、.ini ファイルを編集します。
    このファイルを他の場所に置きたい場合は、手順 10 で、
    オプション --with-config-file-path=/path を使用します。

    php.ini-dist ではなく、php.ini-recommended を使用する場合は、PHP の
    動作が変化しますので、ファイル中に記載されている変更点の一覧を確認する
    ようにしてください。

14. httpd.conf を編集し、PHP の共有モジュールをロードするよう設定します。
    LoadModule 命令の右側に記述するパスは、システムの PHP 共有モジュール
    を指している必要があります。上記の make install により既にこの設定は
    追加されている場合もありますが、確認が必要です。

    PHP 4 の場合:

      LoadModule php4_module modules/libphp4.so

    PHP 5 の場合:

      LoadModule php5_module modules/libphp5.so
   
15. Apache が特定の拡張子のファイルを PHP としてパースするよう設定します。
    たとえば、Apache が拡張子 .php のファイルを PHP としてパースするようにします。
    単に Apache の AddType ディレクティブを使うだけではなく、
    悪意を持ってアップロード (あるいは作成) された exploit.php.jpg
    のようなファイルが PHP として実行されてしまわないようにしたいものです。
    この例では、PHP としてパースさせたい任意の拡張子を追加していくだけです。
    ためしに .phtml を追加してみましょう。
            
      <FilesMatch \.php$>
          SetHandler application/x-httpd-php
      </FilesMatch>

    あるいは、拡張子 .php, .php2, .php3, .php4, .php5, .php6, そして
    .phtml のファイルだけを PHP として実行したいは、このようにします。

      <FilesMatch "\.ph(p[2-6]?|tml)$">
          SetHandler application/x-httpd-php
      </FilesMatch>
    
    拡張子 .phps のファイルを PHP ソースファイルとして扱うには、これを追加します。

      <FilesMatch "\.phps$">
          SetHandler application/x-httpd-php-source
      </FilesMatch>

16. Apache サーバを、通常の手順通り、起動させます。
      /usr/local/apache2/bin/apachectl start

          - あるいは -

      service httpd restart

上記の手順で、Apache2 ウェブサーバ上で SAPI モジュールとして PHP を動作させることができます。もちろん、Apacheと PHP の双方とも、もっと多くの configure オプションを指定することが出来ます。 詳しい情報を得るには、ソースツリーディレクトリで ./configure --help を実行してください。また、マルチスレッド版の Apache2 をビルドする場合は、デフォルトの MPM である preforkworker もしくは perchild で 上書きする必要があります。このためには、上記の手順 6 で--with-mpm=worker もしくは--with-mpm=perchild を指定します。マルチスレッド版 については、その動作に関して十分注意してください。 詳細については Apacheドキュメントの » マルチプロセッシングモジュール (MPM) を参照してください。

注意: コンテントネゴシエーションを使用する場合には、 Apache の MultiViews オプションに関するFAQ を参照してください。

注意: マルチスレッド版の Apache をビルドする場合は、システムがスレッドを サポートしている必要があります。また、PHP は 実験的なステータスにある Zend Thread Safety (ZTS) でビルドされます。 そのため、使用できない拡張モジュールがあります。デフォルトの prefork MPM でのビルドが推奨されます。



add a note add a note User Contributed Notes
Apache 2.0 (Unixシステム用)
nabil at world dot com
24-May-2008 12:27
I couldn't start Apache2 after installing PHP5 in archlinux, I got this error :

Cannot load /.../libphp5.so into server: /.../libphp5.so: undefined symbol: _efree

The solution was "make clean" on the PHP5 source directory, then ./configure, make & make install again.
packard_bell_nec at hotmail dot com
27-Oct-2007 09:08
If you install PHP as an Apache module, you can consider the following. Instead of adding:
application/x-httpd-php    php
application/x-httpd-php-source    phps
into Apache mime.types, you can add:
AddType application/x-httpd-php    .php
AddType application/x-httpd-php-source    .phps
into Apache httpd.conf, OR you can add:
AddHandler application/x-httpd-php    .php
AddHandler application/x-httpd-php-source    .phps
into Apache httpd.conf. The last one is the preferred way of configuration, but it does not work in previous Apache versions.
stoopbrain
22-Oct-2006 07:30
Following on from Chris' comment (22-Sept-2006), my RHEL4 PHP4 rpm added a php.conf file at:
/etc/httpd/conf.d/php.conf

This was referenced in the httpd.conf by it's Include directive:
Include conf.d/*.conf
chris@gerlt -dot- net
22-Sep-2006 11:33
Install issues on Redhat, specifically RHEL4 with php4 already installed: 

I discovered that there was an issue caused by redhat loading php4 in another file seperate from the httpd.conf file!  This took me hours to discover.  Make sure you know if the apache config file (httpd.conf) is loading configurations from a directory (or another file(s)) as well.  If so, look in there for any php module loading which could conflict with the new module you are compiling/installing.
susie91
28-Aug-2006 01:34
for slackware 10.2 users with apache2, mysql5, and trying to install php5:

when following the directions above, after this step:

./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql

i kept getting this error:
"Unable to find MySql header files...."

the only way i could get php5 with mysql support was to compile MySql5 from source, and not use the binary as the mysql site recommends.

then i was able to ./configure successfully, but for some reason php was configured to compile the CGI version.

so, had to use this ./configure line:

./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql  --disable-cgi

alternatively, you could install php4 which does bundle the MySql client files.
jaya
06-Jul-2006 04:41
PHP 5.1.4 INSTALLATION on Solaris 9 (Sparc)

Solaris9 Packages Installed:

Verify required package installation:
root# pkginfo SUNWbtool SUNWsprot SUNWtoo SUNWhea SUNWarc \
SUNWlibm SUNWlibms SUNWdfbh SUNWxglh SUNWcg6h

Uninstall Default Apache Packages:
root# /etc/init.d/apache stop
root# pkginfo |grep Apache
root# pkgrm SUNWaclg SUNWapchd SUNWapchr SUNWapchu

Create installation Directory:
root# mkdir /phpdata/

Download Required Packages from Sunfreeware:

Install libiconv-1.8 and gcc3.3.2 packages
root# pkgadd -d ./libiconv-1.8-sol9-sparc-local
root# pkgadd -d ./gcc-3.3.2-sol9-sparc-local

set LD_LIBRARY_PATH, CC and PATH variables
root# LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib/sparcv9/:\
/usr/lib:/usr/openwin/lib:/opt/local/lib:/usr/local/ssl/lib:\
/usr/local/apr/lib:/opt/mysql/mysql/lib
root# CC=gcc
root# PATH=$PATH:/usr/ucb:/usr/local/bin/
root# export LD_LIBRARY_PATH CC PATH
 
Install apr-1.2.2 and aprutil-1.2.2 packages

root# gzcat apr-1.2.2.tar.gz |tar xvf -
root# cd apr-1.2.2
root# ./configure
root# make
root# make install
root# cd ..

root# gzcat aprutil-1.2.2.tar.gz |tar xvf -
root# cd apr-util-1.2.2/
root# ./configure --with-apr=/usr/local/apr/
root# make
root# make install

Install gawk-3.1.4, expat-1.95.5, db-4.2.52.NC,
gdbm-1.8.3, libgcc-3.3 and libxml2-2.6.16 packages
root# cd ..
root# pkgadd -d ./gawk-3.1.4-sol9-sparc-local
root# pkgadd -d ./expat-1.95.5-sol9-sparc-local
root# pkgadd -d ./db-4.2.52.NC-sol9-sparc-local
root# pkgadd -d ./gdbm-1.8.3-sol9-sparc-local
root# pkgadd -d ./libgcc-3.3-sol9-sparc-local
root# pkgadd -d ./libxml2-2.6.16-sol9-sparc-local

Install GNU make package
root# gzcat make-3.81.tar.gz |tar xvf -
root# cd make-3.81
root# ./configure
root# make
root# make install
root# cd ..

Install mysql-standard-5.0.22 package
Search for user mysql
root# grep mysql /etc/passwd
root# grep mysql /etc/group

If not found create user and group mysql
root# groupadd mysql
root# useradd -G mysql mysql
root# pkgadd -d ./mysql-standard-5.0.22-solaris9-sparc.pkg.gz

Install openssl-0.9.7g package
root# gzcat openssl-0.9.7g.tar.gz |tar xvf -
root# cd openssl-0.9.7g
root# ./config shared
root# make
root# make install
root# cd ..

Install Apache2 package
root# gzcat httpd-2.2.0.tar.gz |tar xvf -
root# cd httpd-2.2.0
root# ./configure --enable-so
root# /usr/local/bin/make
root# /usr/local/bin/make install
root# cd ..

Install php-5.1.4 package
root# gzcat php-5.1.4.tar.gz |tar xvf -
root# cd php-5.1.4
root# ./configure --with-apxs2=/usr/local/apache2/bin/apxs\
--with-ldap --with-mysql=/opt/mysql/mysql/
root# /usr/local/bin/make
root# /usr/local/bin/make install
root# cp php.ini-dist /usr/local/lib/php.ini

Edit httpd.conf to load the PHP module
and to parse certain extensions as PHP
root# vi /usr/local/apache2/conf/httpd.conf
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php .phtml

Start Apache
root# /usr/local/apache2/bin/apachectl start
 
Add environmental variables below HTTPD
root# vi /usr/local/apache2/bin/apachectl
LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib/sparcv9/:
/usr/lib:/usr/openwin/lib:/opt/local/lib:/usr/local/ssl/lib:
/usr/local/apr/lib:/opt/mysql/mysql/lib
PATH=/bin:/sbin:/usr/ccs/bin:/usr/sbin:/usr/openwin/bin:\
/usr/ucb:/usr/local/bin/
export LD_LIBRARY_PATH PATH

Create Apache Startup Script
pillepop2003 at yahoo dot de
20-Apr-2006 02:18
For unix (especially opensuse 10.0) you can find bison and flex here:

ftp.gnu.org/non-gnu/flex
ftp.gnu.org/pub/gnu/bison

Peace ;-)
felixcca at yahoo dot ca
30-Mar-2006 01:13
I've (painfully) discovered that installing PHP5 with "make install" under SuSe 9.2 is NOT a good idea.
http://www.aditus.nu/jpgraph/apache2suse.php
This page explains how to install it without breaking everything that's php-related in the Apache2 configuration. Its first purpose, though, is to show how to have php 4 and 5 to cohabit properly.
frank@ethisoft
28-Sep-2005 07:30
Using Apache2 & PHP5 work perfectly fine & safe together.
- all core modules are safe in Zend Engine 2
- third-party-libraries should be avoided
- semaphores and shared memory enables you to ensure yourself that your application/website is thread-safe also with non-thread-safe PHP modules!
happyboy at php dot org
04-Aug-2005 09:30
FILE TRUNCATED!!

during the make process should u receive an error declaring ext/ctype/ctype.lo (or another file) is truncated then you need to 'make clean' prior to a healthy 'make' and 'make install.'

looking into your ext/ directory you may find the offensive file to be 1 byte long.
mihai dot sandu at gtstelecom dot ro
01-Mar-2005 12:22
For the SuSE9.2 install of PHP5.
First:
If building on a x64 platform, please set LDFLAGS="-L/usr/lib64" before configure.
As for install, it suffices to go to /etc/apache2 and:
ln -s sysconfig.d/loadmodule.conf httpd2-prefork.conf
and then make install
neil
11-Feb-2005 09:21
To install mysql and mysqli with PHP5 do the following:

after doing:

./configure --with-mysql=/path/to/mysql_config --with-mysqli=/path/to/mysql_config

do this:

"
    if you want to use both the old mysql and the new mysqli interface, load the Makefile into your editor and search for the line beginning with EXTRA_LIBS; it includes -lmysqlclient twice; remove the second instance
"

then you can:

make
make install

.....
Pleasse note: you must have mysql-dev installed (RPM or source) or you will not have the mysql_config file at all.  The standard, server, and client installations of MySQL do not include it.  I read somewhere that the mysql and mysqli paths must be identical.

Quoted from Michael Kofler at the following link:
http://www.kofler.cc/forum/forumthread.php?rootID=3571
Dan Scott (dan dot scott at acm dot org)
20-Jan-2005 03:36
Building PHP 5.x with Apache2 on SuSE Professional 9.1/9.2

SuSE uses a rather fragmented set of Apache configuration files stored in /etc/apache2/. When you configure PHP 5.x with:

$ ./configure --with-apxs2=/usr/sbin/apxs2
$ make

everything builds just fine; but when you issue:
$ su -c "make install"

the unconventional Apache conf file layout confuses the install-sapi section of the Makefile and the process halts with the following error:

apxs:Error: Config file /etc/apache2/httpd2-prefork.conf not found.
make: *** [install-sapi] Error 1

At this point only the PHP SAPI library has been copied into place; the rest of the files (like PEAR scripts, PHP-CLI, etc) have not been installed. But never fear! You can overcome this problem with the following steps:

1. Edit Makefile and change the following line to remove "install-sapi":
install_targets = install-sapi install-cli install-pear install-build install-headers install-programs

2. Issue the make install command again:
$ su -c "make install"

3. Add the PHP module & type instructions to the Apache configuration. As root, create a new file, /etc/apache2/conf.d/php5.conf that contains the following lines:

LoadModule php5_module /usr/lib/apache2/libphp5.so
AddType application/x-httpd-php php

--- And that's it. Everything else is just as the documentation suggests it should be.
praveen dot k at masconit dot com
15-Nov-2004 08:38
Hi too had same problem with multiview like when i execute http://huey/admin/test.php it used to compile but when i use http://huey/admin/test it wouldnt recognise it as php file... i worked it out with the addhandler method and AddType in different line and setting multiview for directive

"multiviews Options Indexes FollowSymLinks MultiViews"

the directives u can set it to root directory so now when u type pn test it will search in precendence for test.php, test.html if any .....

its working for me with apache2.0.47 and php 4.3.9 on solaris

praveen
nospam-1 at spam dot matt dot blissett dot me dot uk
01-Oct-2004 08:52
If you're trying to get PHP and Multiviews to work properly, try this page:
http://tranchant.plus.com/notes/multiviews

(In brief, a request for the URL http://example.net/thing, where there are possible matches thing.php and thing.pdf, returns a 406 with many browsers because of the application/x-httpd-php MIME type set above. The link above gives a better method for using php, instead using these directives:
AddHandler php5-script php [or php-script for php4]
AddType text/html php
For more info see the link.)

 
show source | credits | stats | sitemap | contact | advertising | mirror sites