9
5

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.

CentOS6.9 + Apache2.4 + PHP7.1 の環境構築

Last updated at Posted at 2018-05-10

問題

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を使わない方式にした。

9
5
2

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
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?