CentOS6.7 64bitにPHP5.4.36をRPMからインストール
CentOS6.7の64bit版にPHP5.4.36をRPMからインストールする方法を以下に示します。
※CentOS7 64bitをご使用の場合は、当サイトのCentOS7 64bitにPHP5.6をRPMからインストールのページをご覧ください。
当サイトのApache2.4をRPMからインストールする方法でも紹介しているApache2.4をRPMからインストールしている場合、CentOS6.7の標準リポジトリのPHPは、以下のようなApacheのMMN(Module Magic Number)の違いによりインストールできなくなってしまいます。
# yum install php :(略) 依存性の解決をしています -->, トランザクションの確認を実行しています。 --->, Package php.x86_64 0:5.3.3-46.el6_6 will be インストール -->, 依存性の処理をしています: php-common(x86-64) = 5.3.3-46.el6_6 のパッケージ: php-5.3.3-46.el6_6.x86_64 -->, 依存性の処理をしています: php-cli(x86-64) = 5.3.3-46.el6_6 のパッケージ: php-5.3.3-46.el6_6.x86_64 -->, 依存性の処理をしています: httpd-mmn = 20051115 のパッケージ: php-5.3.3-46.el6_6.x86_64 -->, トランザクションの確認を実行しています。 --->, Package php.x86_64 0:5.3.3-46.el6_6 will be インストール -->, 依存性の処理をしています: httpd-mmn = 20051115 のパッケージ: php-5.3.3-46.el6_6.x86_64 --->, Package php-cli.x86_64 0:5.3.3-46.el6_6 will be インストール --->, Package php-common.x86_64 0:5.3.3-46.el6_6 will be インストール -->, 依存性解決を終了しました。 エラー: パッケージ: php-5.3.3-46.el6_6.x86_64 (updates) 要求: httpd-mmn = 20051115 インストール: httpd-2.4.16-1.x86_64 (installed) httpd-mmn = 20120211 利用可能: httpd-2.2.15-45.el6.centos.x86_64 (base) httpd-mmn = 20051115 利用可能: httpd-2.2.15-47.el6.centos.x86_64 (updates) httpd-mmn = 20051115 問題を回避するために --skip-broken を用いることができません これらを試行できます: rpm -Va --nofiles --nodigest
また、CentOS6.7の標準リポジトリからインストールできるPHPのバージョンは、5.3.3になっています。
RPMを作成する場合、PHPの公式サイトからソースをダウンロードすることができますが、SPECファイルが付いていないため、このままではrpmbuildコマンドを使用してRPMの作成ができません。
PHPを提供しているリポジトリとして、CentOSのWikiでもIUSやRemiが紹介されていますが、これらのPHPも同様のエラーになってしまいます。
※CentOS6.7の標準リポジトリからインストールできるApache2.2.15を使用している場合は、IUSやRemiのリポジトリからPHP5.4をインストールすることも可能です。
※yumリポジトリにIUSとRemiを追加する方法については、当サイトのCentOS6 64bitのyumリポジトリにIUSを追加のページ、CentOS6 64bitのyumリポジトリにRemiを追加のページをご覧ください。
ここではPHP5.4のRPMは、IUSからダウンロードしたSRPMを元に作成していきます。
※SRPMのダウンロード元としてRemiもありますが、SRPMのアーカイブページがなく、最新のバージョンのみがダウンロード可能となっています。そのためアーカイブページもあり、過去のバージョンもダウンロード可能なIUSのほうを利用するようにしています。
※IUSからダウンロードできるPHP5.4.37から5.4.45のSRPMを確認したところ、httpd-develにバージョン2.4未満のものが依存関係で必要となり、ここで使用しているApache2.4では利用できなかったため、PHPのバージョンは5.4.36を使用しています。
依存関係にあるパッケージで、CentOS6.7の標準リポジトリからインストールできるものについては、特別なものでない限り省略しています。
以下の各コマンドで、プロンプトが「#」で開始しているものはrootユーザーでの実行、「$」で開始しているものは一般ユーザーでの実行となります。
ここでRPMの作成に使用しているrpmbuildコマンドについては、当サイトのCentOS6 64bit rpmbuildコマンドによるRPMの作成のページもご覧ください。
httpd-develのインストール
PHP5.4.36のRPMを作成するには、依存関係となるhttpd-develが必要となります。
Apacheのインストールを、当サイトのCentOS6 64bitにApacheをRPMからインストールのページを参考に行っている場合、同ページを参考にhttpd-develのインストールを行ってください。
libcurl-develのインストール
PHP5.4.36のRPMを作成の際に、依存関係としてcurl-develのバージョン7.9以上が必要と警告メッセージが表示された場合、CentOS6.7の標準リポジトリにはcurl-develというパッケージはありませんが、こちらはlibcurl-develをインストールすればよいです。
これは以下のコマンドで確認できます。
# yum provides curl-devel :(略) libcurl-devel-7.19.7-46.el6.x86_64 : Files needed for building applications with libcurl リポジトリー : base 一致 : その他 : curl-devel libcurl-devel-7.19.7-46.el6.i686 : Files needed for building applications with libcurl リポジトリー : base 一致 : その他 : curl-devel
以下のコマンドを実行して、libcurl-develのインストールを行います。
# yum install libcurl-devel
libjpeg-turbo-develのインストール
PHP5.4.36のRPMを作成の際に、依存関係としてlibjpeg-develが必要と警告メッセージが表示された場合、CentOS6.7の標準リポジトリにはlibjpeg-develというパッケージはありませんが、こちらはlibjpeg-turbo-develをインストールすればよいです。
これは以下のコマンドで確認できます。
# yum provides libjpeg-devel :(略) libjpeg-turbo-devel-1.2.1-3.el6_5.x86_64 : Headers for the libjpeg-turbo library リポジトリー : base 一致 : その他 : libjpeg-devel libjpeg-turbo-devel-1.2.1-3.el6_5.i686 : Headers for the libjpeg-turbo library リポジトリー : base 一致 : その他 : libjpeg-devel
以下のコマンドを実行して、libjpeg-turbo-develのインストールを行います。
# yum install libjpeg-turbo-devel
firebird-develのインストール
PHP5.4.36のRPMを作成するには、依存関係となるfirebird-develが必要となります。
CentOS6.7の標準リポジトリにはfirebird-develが存在しないため、ここではEPELのリポジトリからインストールを行います。
以下のコマンドを実行して、firebird-develのインストールを行います。
※EPELのリポジトリの使用方法については、当サイトのCentOS6 64bitのyumリポジトリにEPELを追加のページをご覧ください。
# yum --enablerepo=epel install firebird-devel
libmcrypt-develのインストール
PHP5.4.36のRPMを作成するには、依存関係となるlibmcrypt-develが必要となります。
CentOS6.7の標準リポジトリにはlibmcrypt-develが存在しないため、ここではEPELのリポジトリからインストールを行います。
以下のコマンドを実行して、libmcrypt-develのインストールを行います。
※EPELのリポジトリの使用方法については、当サイトのCentOS6 64bitのyumリポジトリにEPELを追加のページをご覧ください。
# yum --enablerepo=epel install libmcrypt-devel
PHP5.4.36のインストール
IUSからPHP5.4.36のSPRMをダウンロードしてRPMを作成し、インストールを行います。
PHP5.4.36のSRPMをダウンロード
以下のコマンドを実行して、PHP5.4.36のSRPMのダウンロードを行います。
※ダウンロード元のURLは、IUSのサイトから遷移できるCentOS6用のSRPMのアーカイブページにリンクがあります。
$ wget https://dl.iuscommunity.org/pub/ius/archive/CentOS/6/SRPMS/php54-5.4.36-1.ius.centos6.src.rpm
ApacheのMPMの設定
PHPではApacheのMPMにマルチスレッドで動作するworkerやeventを使用することは推奨されていません。
また、MPMの設定がPHPのRPMを作成する際にも影響してきます。
当サイトのCentOS6 64bitにApacheをRPMからインストールのページを参考に、Apacheで使用するMPMをマルチスレッドでは動作しないpreforkに設定してください。
PHP5.4.36のRPMを作成
以下のコマンドを実行して、PHP5.4.36のRPMの作成を行います。
$ rpmbuild --rebuild --clean php54-5.4.36-1.ius.centos6.src.rpm
以下のようなエラーになった場合、
Sorry, I cannot run apxs. Possible reasons follow: 1. Perl is not installed 2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs 3. Apache was not built using --enable-so (the apxs usage page is displayed) The output of /usr/sbin/apxs follows: ./configure: line 8755: /usr/sbin/apxs: No such file or directory configure: error: Aborting
Apache2.4をRPMからインストールした場合、httpd-develに含まれているapxsのインストール先が「/usr/sbin/apxs」ではなく「/usr/bin/apxs」になっているのが原因です。
rpmbuildコマンド実行時のSPECファイルの出力先に、PHP5.4.36のSPECファイル「SPECS/php54.spec」が出力されていますので、こちらを以下のように変更します。
apxsのパスを指定しているところを2箇所変更します。
:(略) # Build Apache module, and the CLI SAPI, /usr/bin/php pushd build-apache build --with-apxs2=%{_sbindir}/apxs ↓変更 build --with-apxs2=%{_bindir}/apxs
:(略) # Build a special thread-safe Apache SAPI pushd build-zts build --with-apxs2=%{_sbindir}/apxs ↓変更 build --with-apxs2=%{_bindir}/apxs
以下のコマンドを実行して、変更したSPECファイルからRPMの作成を行います。
$ rpmbuild -bb --clean php54.spec
以下のようなエラーになった場合、
mysql_config not found configure: error: Please reinstall the mysql distribution
CentOS6.7の標準リポジトリや、IUSのリポジトリからMySQLをインストールした場合、mysql_configは「/usr/lib64/mysql/mysql_config」と「/usr/bin/mysql_config」が存在するのですが、MySQLのyumリポジトリや、MySQLの公式サイトのRPMからインストールした場合では、「/usr/bin/mysql_config」しか存在せず、SPECファイルではlibのほうを参照するようになっているのが原因です。
rpmbuildコマンド実行時のSPECファイルの出力先に、PHP5.4.36のSPECファイル「SPECS/php54.spec」が出力されていますので、こちらを以下のように変更します。
mysql_configのパスを指定しているところを1箇所変更します。
# Use the arch-specific mysql_config binary to avoid mismatch with the # arch detection heuristic used by bindir/mysql_config. %global mysql_config %{_libdir}/mysql/mysql_config ↓変更 %global mysql_config %{_bindir}/mysql_config
以下のコマンドを実行して、変更したSPECファイルからRPMの作成を行います。
$ rpmbuild -bb --clean php54.spec
以下のRPMが作成されます。
- php54-5.4.36-1.ius.el6.x86_64.rpm
- php54-cli-5.4.36-1.ius.el6.x86_64.rpm
- php54-fpm-5.4.36-1.ius.el6.x86_64.rpm
- php54-common-5.4.36-1.ius.el6.x86_64.rpm
- php54-devel-5.4.36-1.ius.el6.x86_64.rpm
- php54-imap-5.4.36-1.ius.el6.x86_64.rpm
- php54-ldap-5.4.36-1.ius.el6.x86_64.rpm
- php54-pdo-5.4.36-1.ius.el6.x86_64.rpm
- php54-mysql-5.4.36-1.ius.el6.x86_64.rpm
- php54-mysqlnd-5.4.36-1.ius.el6.x86_64.rpm
- php54-pgsql-5.4.36-1.ius.el6.x86_64.rpm
- php54-process-5.4.36-1.ius.el6.x86_64.rpm
- php54-odbc-5.4.36-1.ius.el6.x86_64.rpm
- php54-soap-5.4.36-1.ius.el6.x86_64.rpm
- php54-interbase-5.4.36-1.ius.el6.x86_64.rpm
- php54-snmp-5.4.36-1.ius.el6.x86_64.rpm
- php54-xml-5.4.36-1.ius.el6.x86_64.rpm
- php54-xmlrpc-5.4.36-1.ius.el6.x86_64.rpm
- php54-mbstring-5.4.36-1.ius.el6.x86_64.rpm
- php54-gd-5.4.36-1.ius.el6.x86_64.rpm
- php54-bcmath-5.4.36-1.ius.el6.x86_64.rpm
- php54-dba-5.4.36-1.ius.el6.x86_64.rpm
- php54-litespeed-5.4.36-1.ius.el6.x86_64.rpm
- php54-mcrypt-5.4.36-1.ius.el6.x86_64.rpm
- php54-tidy-5.4.36-1.ius.el6.x86_64.rpm
- php54-mssql-5.4.36-1.ius.el6.x86_64.rpm
- php54-embedded-5.4.36-1.ius.el6.x86_64.rpm
- php54-pspell-5.4.36-1.ius.el6.x86_64.rpm
- php54-recode-5.4.36-1.ius.el6.x86_64.rpm
- php54-intl-5.4.36-1.ius.el6.x86_64.rpm
- php54-enchant-5.4.36-1.ius.el6.x86_64.rpm
- php54-debuginfo-5.4.36-1.ius.el6.x86_64.rpm
PHP5.4.36のインストール
以下のコマンドを実行して、PHP5.4.36のインストールを行います。
php54をインストールするには、php54-common、php54-cliが必要となるため、一緒にインストールを行います。
# rpm -Uvh php54-5.4.36-1.ius.el6.x86_64.rpm php54-common-5.4.36-1.ius.el6.x86_64.rpm php54-cli-5.4.36-1.ius.el6.x86_64.rpm
【補足】マルチバイト文字列関数を使用する場合
マルチバイト文字列関数(mb_〜)を使用するには、mbstringモジュールが別途必要となります。
以下のコマンドを実行して、mbstringモジュールのインストールを行います。
# rpm -Uvh php54-mbstring-5.4.36-1.ius.el6.x86_64.rpm
尚、mbstring.soファイルの読み込み設定は、php54-mbstringのインストールファイルに含まれている「/etc/php.d/mbstring.ini」で、自動的に行われるようになっています。
※マルチバイト文字列関数を使用する際は、php.iniで「mbstring.internal_encoding」を設定する必要があります。PHP5.6では、この設定は非推奨(不要)になっています。
【補足】PDOでMySQLに接続する場合
PDOでMySQLに接続するには、pdoモジュール、mysqlndモジュールが別途必要となります。
以下のコマンドを実行して、pdoモジュール、mysqlndモジュールのインストールを行います。
# rpm -Uvh php54-pdo-5.4.36-1.ius.el6.x86_64.rpm php54-mysqlnd-5.4.36-1.ius.el6.x86_64.rpm
尚、pdo.soファイルの読み込み設定は、php54-pdoのインストールファイルに含まれている「/etc/php.d/pdo.ini」で、自動的に行われるようになっています。
また、php54-mysqlndのインストールファイルには「/etc/php.d/mysqlnd.ini」、「/etc/php.d/mysqlnd_mysql.ini」、「/etc/php.d/mysqlnd_mysqli.ini」、「/etc/php.d/pdo_mysqlnd.ini」が含まれており、それぞれmysqlnd.so、mysqlnd_mysql.so、mysqlnd_mysqli.so、pdo_mysqlnd.soが読み込まれるようになっています。
インストール後の設定
Apacheの設定ファイルの編集
PHPが利用できるようにするには、Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」で、PHPの設定ファイル「/etc/httpd/conf.d/php.conf」の読み込みを行う必要があります。
「php.conf」の読み込みには、以下の記述を追記します。
Include /etc/httpd/conf.d/php.conf
他のパッケージで使用しているconfファイルがある場合も一緒に読み込めるようにするには、以下の記述を追記します。
Include /etc/httpd/conf.d/*.conf
PHPの設定ファイルの編集
PHPの設定ファイル「/etc/httpd/conf.d/php.conf」で、モジュールを読み込むパスが実際のものと異なっていますので、以下のように編集します。
<,IfModule prefork.c>, LoadModule php5_module modules/libphp5.so ↓変更 LoadModule php5_module lib64/httpd/modules/libphp5.so <,/IfModule>,
<,IfModule worker.c>, LoadModule php5_module modules/libphp5-zts.so ↓変更 LoadModule php5_module lib64/httpd/modules/libphp5-zts.so <,/IfModule>,
尚、これらのモジュールはphp54に含まれており、モジュールのパスは以下のコマンドで確認することができます。
# rpm -ql php54 :(略) /usr/lib64/httpd/modules/libphp5-zts.so /usr/lib64/httpd/modules/libphp5.so :(略)
httpd.confで、「ServerRoot ‘/usr’」と設定されているため、php.confでは「/usr」以下でのパス指定が行えるようになっています。
Apacheから外部のデータベースへのアクセスを許可
PHPから外部のMySQLへ接続を行う際に、以下のようなエラーになってしまう場合、
(PHPからローカルのMySQLへの接続、mysqlコマンドを使用しての外部のMySQLへの接続は可能。)
SQLSTATE[HY000] [2002] Permission denied
SELinuxによるアクセス制御が有効になっていることが原因の可能性があります。
SELinuxによるApacheから外部のデータベースへのアクセス許可の設定については、当サイトのCentOS6 64bit SELinuxによるアクセス制御のページをご覧ください。
PHP5.4.36のインストールについては、以上です。
PHPに関するおすすめの書籍
当サイトの書籍紹介ページで、PHPに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。