問題
CentOS7はデフォルトApache2.4なのですんなりいくのだが、CentOS6はそうも行かない。
bash
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install -y --enablerepo=remi,remi-php71 php
とすると
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
php x86_64 7.1.17-1.el6.remi remi-php71 2.8 M
Installing for dependencies:
httpd x86_64 2.2.15-60.el6.centos.6 updates 836 k
httpd-tools x86_64 2.2.15-60.el6.centos.6 updates 80 k
apache2.2が依存関係でインストールされる。
2.2はEOLでupdateしなきゃならないので邪魔なんだけど。。。
解決方法
bash
# php7.1をインストール。7.2にするなら全部読み替えること。
yum install -y --enablerepo=remi,remi-php71 \
php \
php-devel
# 依存関係で入ったapache2.2を削除
rpm -e --nodeps httpd
rpm -e --nodeps httpd-tools
rm -fr /etc/httpd
rm -fr /etc/init.d/httpd
# apache2.4をインストール
wget https://repos.fedorapeople.org/repos/jkaluza/httpd24/epel-httpd24.repo
mv epel-httpd24.repo /etc/yum.repos.d/
yum -y install --enablerepo=epel-httpd24 httpd24-httpd httpd24-httpd-devel httpd24-mod_proxy_html httpd24-mod_session httpd24-mod_ssl
# httpd24関連はパスが長いので2.2に合わせてリンクも作っている
ln -s /opt/rh/httpd24/root/etc/httpd /etc/httpd
ln -s /etc/init.d/httpd24-httpd /etc/init.d/httpd
chkconfig httpd on
# PHP7.1をコンパイルしてapache2.4 向けのPHPライブラリ(libphp7.so)を作成する
yum -y install \
bison \
libxml2-devel
# .configureの失敗回避
ln -s /opt/rh/httpd24/root/usr/lib64/pkgconfig/apr-1.pc /usr/lib64/pkgconfig/apr-1.pc
# PHP7.1のコンパイルする。副産物(libphp7.so)が目的なので出来上がるphpは使わない
wget https://github.com/php/php-src/archive/php-7.1.17.tar.gz
tar xvf php-7.1.17.tar.gz
cd php-src-php-7.1.17
./buildconf --force
./configure \
--with-config-file-path=/etc/ \
--with-config-file-scan-dir=/etc/php.d \
--with-apxs2=/opt/rh/httpd24/root/usr/bin/apxs
make
cp /home/vagrant/php-src-php-7.1.17/libs/libphp7.so /opt/rh/httpd24/root/usr/lib64/httpd/modules/libphp7.so
# ライブラリを読み込ませる設定を追記
echo "LoadModule php7_module /opt/rh/httpd24/root/usr/lib64/httpd/modules/libphp7.so" >> /etc/httpd/conf/httpd.conf
service httpd start
makeしたPHP7.1をmake installしないのは、yum installで各種PHPライブラリを取得するとPHP Warning: Module 'apc' already loaded in Unknown on line
という警告が大量に出たから。
phpの./configure
で上のようにほぼ何もつけなくてもjson等のライブラリをyumが取ってきてしまうので、/etc/php.d/xxxx.confが勝手に作られて多重ロードの警告を出してしまう。
まあ多重ロードの定義を消せばいいのだが、以降も追加でPHPライブラリが欲しくなる可能性があるので、導入が簡単なyumを使えるようにmakeしたphpを使わない方式にした。