📝

CentOS6でPHP7.4をビルドする
August 16, 2023February 19, 2024
#CentOS#Develop#PHP

PHP のアップデートは、多くの Web アプリケーション、特に WordPress での要件となっています。
しかし、CentOS6 のような古い OS を使用している場合、標準の手段ではアップデートが難しい場合があります。
この記事では、そんな課題を解決するための具体的な手順を提供します。

警告

PHP7.4 は 2022 年 11 月 28 日にサポートが切れているので利用する場合は暫定的な対応として利用してください。
本来は OS を新しいものに変えてサポートされた状態で使うことが望ましい対応です。
一部のステップで--no-check-certificateなどセキュリティレベルを下げる操作を含みます。
利用する際には内容を理解した上で実行してください。

検証環境と条件

  • CentOS 6.7
  • Apache 2.2.15 (BASErepo)
  • PHP 7.3 (remirepo)
  • PHP-7.4.33(source)
  • PHP はモジュールモードで駆動させる
  • デフォルト状態の WordPress が動けば良いこととする

PHP7.4.33 のソースコードのダウンロード

ソースコードは git からダウンロードするか公式サイトからダウンロードする。
git のソースコードを使うとbisonのバージョンが古いと怒られるので今回は公式サイトからダウンロードした。

configure: error: bison 3.0.0 or later is required to generate PHP parsers (excluded versions: none).

php の公式サイトのソースコードはパーサーコードが含まれているためbisonが必要ない。
CentOS6 では Let’s Encript のルート証明書がないため --no-check-certificate のオプションをつけて証明書チェックを無効化する。

wget https://www.php.net/distributions/php-7.4.33.tar.gz --no-check-certificate

PHP7.4.33 のビルド準備

ビルドのために必要なものを yum からインストールする。 yum が動かないときはこの記事を参照( https://sakakinox.net/posts/p2/

yum install httpd-devel libxml2-devel curl-devel

PHP7.4.33 をビルドする

./configure のコマンドは下記

./configure --prefix=/opt/php74 --with-apxs2=/usr/sbin/apxs --with-json --enable-mbstring --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-onig --enable-xml --with-libxml-dir --with-mysql-sock --without-sqlite3 --without-pdo-sqlite --with-zlib --with-curl

今回は/opt/php74 に設置するため--prefix=/opt/php74
SqLIte のバージョンが CentOS6 では 3.6.20 が入っているが PHP7.4.33 が Sqlite3.7.4 以上を要求してくる。 Wordpress では不要なので除外する。--without-sqlite3 --without-pdo-sqlite

./configure 実行時にonigrumaがインストールされているが検出されない。

checking for oniguruma... no
configure: error: Package requirements (oniguruma) were not met:

No package 'oniguruma' found
rpm -qa |grep onig
oniguruma5php-6.9.6-1.el6.remi.x86_64
oniguruma-5.9.1-3.1.el6.x86_64
oniguruma-devel-5.9.1-3.1.el6.x86_64

oniguruma.pc が見つからなかったためソースからビルドする。 CentOS 6でもonigurumav6.9.8をビルド可能

#phpのディレクトリから出る
cd ../
wget https://github.com/kkos/oniguruma/archive/refs/tags/v6.9.8.zip
unzip v6.9.8.zip
cd oniguruma-6.9.8/
autoreconf -vfi
#すでにパッケージ版があるので別ディレクトリにインストール
./configure --prefix=/opt/oniguruma
make
make install
## libをロードする
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/oniguruma/lib/pkgconfig

PHP をビルドする

#onigurumaディレクトリから出る
cd ../
tar zxvf php-7.4.33.tar.gz
cd php-7.4.33
./configure --prefix=/opt/php74 --with-apxs2=/usr/sbin/apxs --with-json --enable-mbstring --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-onig --enable-xml --with-libxml-dir --with-mysql-sock --without-sqlite3 --without-pdo-sqlite --with-zlib --with-curl
make
make install
/opt/php74/bin/php -v
PHP 7.4.33 (cli) (built: Aug 16 2023 16:53:02) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Apache で利用する

--with-apxs2=/usr/sbin/apxsを追加すると下記の path で SharedObject が作成される

/etc/httpd/modules/libphp7.so

apache の conf を修正する。

vim /etc/httpd/conf/httpd.conf
#既存のモジュールをコメントアウトして1行追加する。
#LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so
LoadModule php7_module        modules/libphp7.so
#Apacheを再起動する。
/etc/init.d/httpd restart

Module を追加したいとき

./configure 追加したいモジュールを追加して make and make install する。 apache の再起動をする。

#new_moduleにモジュール名を追加する。
./configure --prefix=/opt/php74 --with-apxs2=/usr/sbin/apxs --with-json --enable-mbstring --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-onig --enable-xml --with-libxml-dir --with-mysql-sock --without-sqlite3 --without-pdo-sqlite --with-zlib --with-curl --with-new_module
make
make install
/etc/init.d/httpd restart

参考

https://www.php.net/

GitHub - kkos/oniguruma: regular expression library

regular expression library. Contribute to kkos/oniguruma development by creating an account on GitHub.

GitHub

GitHub - kkos/oniguruma: regular expression library

おしまい



sakakinox

Written by sakakinox
Server enginier

Copyright © sakakinox.net 2021-2024.