7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHP 5.5.1 をソースからインストールする

Last updated at Posted at 2018-06-10

[!NOTE]
この記事は 2013/07/31 に momoto.github.io へ投稿した内容を Qiita へ移行してきたものです

 PHP 5.5.1 をソースコードからビルドして、Unix系システムへインストールする手順の記録です。 この記事では CentOS 6.4 環境でインストールの例を示しますが、自身でソースからビルドする方法は特定の Linux ディストリビューションに依りません。

 インストールを行うユーザは、インストール先ディレクトリに対して書込み権限をもっている必要があります。 /usr/local/* にインストールする場合、通常、root 権限が必要です。

1. ソースコードを取得する

 ソースコードをインストールするマシンに用意します。 インターネットからダウンロードする場合、php.net にソースコードの URL が示されています。 bzip2、gzip、xzのアーカイブが用意されていますので、マシンで解凍・展開できる形式を選択してください。

 ダウンロードには cURLGNU Wget などのダウンロードマネージャやウェブブラウザを使用します。 次の例では、cURL をつかって php-5.5.1.tar.gz をダウンロードします。

[root@localhost ~]# curl -Lso php-5.5.1.tar.gz http://jp2.php.net/get/php-5.5.1.tar.gz/from/jp1.php.net/mirror

 取得したアーカイブファイルは適宜、解凍・展開して、ワーキングディレクトリを移動させます。 FHS に準拠するシステムであれば、独自にインストールするソフトウェアのためのディレクトリ /usr/local が予め用意されていますので、この記事ではソースコードを /usr/local/src に配置してインストールをすすめます。

[root@localhost ~]# tar xfz php-5.5.1.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/php-5.5.1
[root@localhost php-5.5.1]#

2. インストール要件を満たす

 マシンがインストールの要件を満たしている必要があります。 また、必要な拡張モジュールがある場合は、そのモジュールの要件も満たす必要があります。

Cコンパイラ
[root@localhost ~]# yum install gcc
Make
[root@localhost ~]# yum install make

3. ビルドファイルを作成する

 configure をつかってビルドファイルを作成します。 configure にオプションを与えることで、インストール先のディレクトリや有効にするモジュールを調整できます。 指定できるオプションについては configure --helpManual を参照してください。 ビルドの要件を満たしていない場合、configure の処理は中断されます。

 例えば、インストール先のディレクトリを /usr/local/php-5.5.1 として、 Apacheモジュール, MySQLiモジュール, PDO MySQLモジュール, OpenSSLモジュール を有効にする場合は次のように configure を実行します。

[root@localhost php-5.5.1]# ./configure \
--prefix=/usr/local/php-5.5.1 \
--with-apxs2=/usr/local/httpd-2.4.6/bin/apxs \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl

 次に、configureのエラー例をいくつか示します。

xml2-config not found.

checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2 installation.

 libxmlモジュール (デフォルトで有効)の要件である libxml が必要です。

[root@localhost php-5.5.1]# yum install libxml2-devel

configure: error: Cannot find OpenSSL’s

configure: error: Cannot find OpenSSL's <evp.h>

 OpenSSLモジュール の要件である OpenSSL が必要です。

[root@localhost php-5.5.1]# yum search install openssl-devel

 configure の処理が終了して Makefile が作成されていれば、ビルドの段階へすすみます。

4. ビルドとインストール

 ビルドとインストールには make を使います。ディスクの容量が充分足りていることを確認してください。

[root@localhost php-5.5.1]# make && make install

 make の処理が無事に終了したらインストールは完了です。 configure --prefix に指定した位置にファイルが展開されているはずです。

[root@localhost php-5.5.1]# /usr/local/php-5.5.1/bin/php -v
PHP 5.5.1 (cli)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies

インストール後

 必要に応じて、php.ini の設定、実行バイナリへのパスの設定を行なってください。 ソースコードのアーカイブには標準の php.ini が、開発環境向けと運用環境向けの2通り用意されています。

[root@localhost php-5.5.1]# cp /usr/local/src/php-5.5.1/php.ini-development /usr/local/php-5.5.1/lib/php.ini

 新しく設置した php.ini が正常に認識されているかどうかは --ini オプションで出力される Loaded Configuration File などで確認できます。

[root@localhost php-5.5.1]# ./bin/php --ini
Configuration File (php.ini) Path: /usr/local/php-5.5.1/lib
Loaded Configuration File:         /usr/local/php-5.5.1/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

 標準のままの状態ではタイムゾーン未設定の警告がでますが、date.timezone ディレクティブにタイムゾーンを設定するとこの警告は出なくなります。その他のディレクティブも用途にあわせて設定してください。

PHP Warning:  Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0
php.ini
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Tokyo

動作を確認する

 最後に、PHP 5.5.1 の動作を少し確認してみます。 ここでは PHP の拡張モジュールが正常に機能しているかどうかを中心に確かめていきます。

apache2.x

 Apache の設定ファイル(httpd.confなど)に LoadModule ディレクティブを正しく記述していることを確認します。

httpd.conf
LoadModule php5_module        modules/libphp5.so

 また、PHP ファイルを Apache ハンドラに指定するため、SetHandler や AddHandler などのディレクティブも必要です。

httpd.conf
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

 libphp5.so は、configure --with-apxs2=FILE オプションを指定していれば、PHP のインストール時に作成されているはずです。

[root@localhost httpd-2.4.6]# file modules/libphp5.so
modules/libphp5.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

 apachectl -M オプションをつかって、読み込まれているモジュールを確認することもできます。

[root@localhost httpd-2.4.6]# apachectl -M | grep php5_module
 php5_module (shared)

MySQLiモジュール

 mysqli モジュールを確認します。 PHP Warning: PHP Startup: Unable to load dynamic library 'php_mysqli.dll' と警告が出る場合はモジュールがうまく読み込まれていません。

[root@localhost php-5.5.1]# php -m | grep mysqli
mysqli

[root@localhost php-5.5.1]# php -r "var_dump(class_exists('mysqli'));"
bool(true)

PDO MySQLモジュール

 pdo_mysql モジュールを確認します。 PHP Warning: PHP Startup: Unable to load dynamic library 'php_pdo_mysql.dll' と警告が出る場合はモジュールがうまく読み込まれていません。

[root@localhost php-5.5.1]# php -m | grep -i pdo
PDO
pdo_mysql
pdo_sqlite

[root@localhost php-5.5.1]# php -r 'print_r(PDO::getAvailableDrivers());'
Array
(
    [0] => mysql
    [1] => sqlite
)

参考

7
6
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?