さて、ようやくApacheを入れ終わったので、PHPのインストールを行います。
こうして今までの記事を並べてみると、サーバーのインストールだけでも
結構な記事になりますね。
いつものようにrootになってダウンロードして解凍、
とりあえずインストールを実行してみます。
オプションはとりあえず最低限で。
perlが入っていないとapxsが実行できないようです。
もともとはperlerですが、
多分、perlでいろいろやることはないだろうと、
めんどいのでyumでインストール
と聞かれるので例によってy
と表示されて無事インストールできました。
さて、apacheは再インストールしないとダメなのでしょうか?
やはりダメなようです。
/usr/local/apache2/bin/apxs
を見てみると、1行目に
と書いてあります。
これを
に置き換えます。
もう一度、PHPのインストールを実行すると、
と聞かれるので例によってy
と表示されて無事インストールできました。
今度こそ・・・
無事先に進めました。
さくっと
ここでエラーに出くわします。
2.7.6-8ですね。
libxml2のページによると2.9.0が最新なようです。
http://xmlsoft.org/
defined but not usedのwarningがたくさん出ますがまあ良しとしましょう。
無事インストールできました。
エラーログを見てみたところ、Warningが出ていることがテスト失敗の原因のようです。
とりあえず実害はないので、このままインストールします。
いくつかのサイトで調べましたが、エラーが出ているにも関わらず、
何も調べないでそのままインストールを実行している方が多々いました。
後で問題になるかもしれないのに信じられない・・・。
今回はボクしか触らないサーバー。
インストールも自分で行ったので、後々XMLのパース関係でエラーが出れば
これが原因かもしれないとわかります。
個人的にmake testは重要だと思います。
さて、次はApacheの設定です。
.phpの設定が追加されているのでコメントアウトを外します。
を
に変更します。
終わったらApacheを再起動します。
php.iniファイルをコピーします。
設置場所はphp_info()で確認できます。
デフォルトでは
/usr/local/lib/php.ini
に設定されるようです。
![$もと東大生もと社長の自由奔放ブログ Just do it now!-php.iniの設置場所を確認](https://stat.ameba.jp/user_images/20130102/23/rb26/11/30/g/t02200025_0616007012360068205.gif?caw=800)
▲php_info()でphp.iniの記載場所を確認
さて、PHPもまた、デフォルトで実行しているPHPのバージョンを出力します。
早速ヘッダーを見てみましょう。
ここですね。
前回、Apacheの設定の際に説明したように、実行環境の詳細情報は伝えるべきではありません。
早速出ないように修正します。
インストールしたApache2.4.3にセキュリティー上の設定を加える
最期の行を
に変更します。
終わったらApacheを再起動します。
確認すると、
無事表示されなくなりました。
こうして今までの記事を並べてみると、サーバーのインストールだけでも
結構な記事になりますね。
まずはインストールしてみる
いつものようにrootになってダウンロードして解凍、
とりあえずインストールを実行してみます。
# wget http://jp1.php.net/get/php-5.4.10.tar.gz/from/this/mirror
# tar xvzf php-5.4.10.tar.gz
# cd php-5.4.10
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbregex --enable-mbstring
# tar xvzf php-5.4.10.tar.gz
# cd php-5.4.10
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbregex --enable-mbstring
オプションはとりあえず最低限で。
The output of /usr/local/apache2/bin/apxs follows:
./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
perlが入っていないとapxsが実行できないようです。
perlのインストール
もともとはperlerですが、
多分、perlでいろいろやることはないだろうと、
めんどいのでyumでインストール
# yum install perl
Is this ok [y/N]:
と聞かれるので例によってy
Complete!
と表示されて無事インストールできました。
apxsのperlのパスを変更
さて、apacheは再インストールしないとダメなのでしょうか?
The output of /usr/local/apache2/bin/apxs follows:
./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
./configure: /usr/local/apache2/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
やはりダメなようです。
/usr/local/apache2/bin/apxs
を見てみると、1行目に
#!/replace/with/path/to/perl/interpreter -w
と書いてあります。
これを
#!/usr/bin/perl -w
に置き換えます。
libxml2のインストール
もう一度、PHPのインストールを実行すると、
checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2 installation.
# yum install libxml2-devel
configure: error: xml2-config not found. Please check your libxml2 installation.
# yum install libxml2-devel
Is this ok [y/N]:
と聞かれるので例によってy
Complete!
と表示されて無事インストールできました。
PHPのmake testでエラーに遭遇
今度こそ・・・
Thank you for using PHP.
無事先に進めました。
さくっと
# make
# make test
# make install
# make test
# make install
ここでエラーに出くわします。
=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Bug #32001 (xml_parse*() goes into infinite loop when autodetection in effect), using UTF-* [ext/xml/tests/bug32001.phpt]
XMLReader: libxml2 XML Reader, DTD [ext/xmlreader/tests/008.phpt]
XMLReader: accessing empty and non existing attributes [ext/xmlreader/tests/012.phpt]
=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Bug #32001 (xml_parse*() goes into infinite loop when autodetection in effect), using UTF-* [ext/xml/tests/bug32001.phpt]
XMLReader: libxml2 XML Reader, DTD [ext/xmlreader/tests/008.phpt]
XMLReader: accessing empty and non existing attributes [ext/xmlreader/tests/012.phpt]
=====================================================================
libxml2のバージョンを確認
# yum list installed|grep libxml2
libxml2.x86_64 2.7.6-8.el6_3.4 @updates
libxml2-devel.x86_64 2.7.6-8.el6_3.4 @updates
libxml2.x86_64 2.7.6-8.el6_3.4 @updates
libxml2-devel.x86_64 2.7.6-8.el6_3.4 @updates
2.7.6-8ですね。
libxml2のページによると2.9.0が最新なようです。
http://xmlsoft.org/
libxml2のソースコードからのインストール
# wget ftp://xmlsoft.org/libxml2/libxml2-2.9.0.tar.gz
# tar xvzf libxml2-2.9.0.tar.gz
# cd libxml2-2.9.0
# ./configure --prefix=/usr/local
# make
# tar xvzf libxml2-2.9.0.tar.gz
# cd libxml2-2.9.0
# ./configure --prefix=/usr/local
# make
defined but not usedのwarningがたくさん出ますがまあ良しとしましょう。
# make test
# make install
# make install
無事インストールできました。
# yum remove libxml2-devel
もう一度PHPのコンパイルを実行
# make clean
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbregex --enable-mbstring
# make
# make test
=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
XMLReader: libxml2 XML Reader, DTD [ext/xmlreader/tests/008.phpt]
XMLReader: accessing empty and non existing attributes [ext/xmlreader/tests/012.phpt]
=====================================================================
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbregex --enable-mbstring
# make
# make test
=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
XMLReader: libxml2 XML Reader, DTD [ext/xmlreader/tests/008.phpt]
XMLReader: accessing empty and non existing attributes [ext/xmlreader/tests/012.phpt]
=====================================================================
エラーログを見てみたところ、Warningが出ていることがテスト失敗の原因のようです。
とりあえず実害はないので、このままインストールします。
# make install
いくつかのサイトで調べましたが、エラーが出ているにも関わらず、
何も調べないでそのままインストールを実行している方が多々いました。
後で問題になるかもしれないのに信じられない・・・。
今回はボクしか触らないサーバー。
インストールも自分で行ったので、後々XMLのパース関係でエラーが出れば
これが原因かもしれないとわかります。
個人的にmake testは重要だと思います。
さて、次はApacheの設定です。
Apacheの設定
# cd /usr/local/apache2/conf
# vi httpd.conf
# vi httpd.conf
.phpの設定が追加されているのでコメントアウトを外します。
# 400 AddType application/x-httpd-php .php
を
400 AddType application/x-httpd-php .php
に変更します。
終わったらApacheを再起動します。
# /usr/local/apache2/bin/apachectl restart
php.iniの設置
php.iniファイルをコピーします。
設置場所はphp_info()で確認できます。
デフォルトでは
/usr/local/lib/php.ini
に設定されるようです。
![$もと東大生もと社長の自由奔放ブログ Just do it now!-php.iniの設置場所を確認](https://stat.ameba.jp/user_images/20130102/23/rb26/11/30/g/t02200025_0616007012360068205.gif?caw=800)
▲php_info()でphp.iniの記載場所を確認
# cp /usr/local/src/php-5.4.10/php.ini-production /usr/local/lib/php.ini
php.iniにセキュリティ上の設定を加える
さて、PHPもまた、デフォルトで実行しているPHPのバージョンを出力します。
早速ヘッダーを見てみましょう。
HTTP/1.1 200 OK
Date: Sun, 30 Dec 2012 12:15:33 GMT
Server: Apache
X-Powered-By: PHP/5.4.10
Connection: close
Content-Type: text/html
Date: Sun, 30 Dec 2012 12:15:33 GMT
Server: Apache
X-Powered-By: PHP/5.4.10
Connection: close
Content-Type: text/html
ここですね。
前回、Apacheの設定の際に説明したように、実行環境の詳細情報は伝えるべきではありません。
早速出ないように修正します。
インストールしたApache2.4.3にセキュリティー上の設定を加える
# vi /usr/local/lib/php.ini
366 ;;;;;;;;;;;;;;;;;
367 ; Miscellaneous ;
368 ;;;;;;;;;;;;;;;;;
369
370 ; Decides whether PHP may expose the fact that it is installed on the se rver
371 ; (e.g. by adding its signature to the Web server header). It is no sec urity
372 ; threat in any way, but it makes it possible to determine whether you u se PHP
373 ; on your server or not.
374 ; http://php.net/expose-php
375 expose_php = On
366 ;;;;;;;;;;;;;;;;;
367 ; Miscellaneous ;
368 ;;;;;;;;;;;;;;;;;
369
370 ; Decides whether PHP may expose the fact that it is installed on the se rver
371 ; (e.g. by adding its signature to the Web server header). It is no sec urity
372 ; threat in any way, but it makes it possible to determine whether you u se PHP
373 ; on your server or not.
374 ; http://php.net/expose-php
375 expose_php = On
最期の行を
375 expose_php = Off
に変更します。
終わったらApacheを再起動します。
# /usr/local/apache2/bin/apachectl restart
確認すると、
HTTP/1.1 200 OK
Date: Sun, 30 Dec 2012 12:29:36 GMT
Server: Apache
Connection: close
Content-Type: text/html
Date: Sun, 30 Dec 2012 12:29:36 GMT
Server: Apache
Connection: close
Content-Type: text/html
無事表示されなくなりました。