Help us understand the problem. What is going on with this article?

CentOS 7 PHP 7.2.5のソースファイルからのインストール

More than 1 year has passed since last update.

動作確認環境

事情によりバージョンをダウングレードしました。新しいバージョンでも動作するはずです。

  • 仮想環境 VMware Workstation Player 12.5.9
  • OS Windows 10 Pro 64bit

仮想環境

  • OS CentOS 7.4 (1708) minimalインストール
  • メモリ 2GB
  • HDD 250GB

前提条件

  • gcc 8.1.0
  • cmake 3.11.2
  • MySQL 5.7.22
  • OpenSSL 1.1.0.h
  • Apache 2.4.33

依存するパッケージをインストール

yumでパッケージをインストールすると2つのパッケージが「利用できません」と表示されるので、事前にインストールする。

パッケージ libmcrypt-devel は利用できません。
パッケージ libtidy-devel は利用できません。

2つのパッケージは通常のyumのインストールではできないのでepel-releaseを利用する。epel-releaseをインストールしてから、それぞれのパッケージをインストールする。

yum -y install epel-release
yum -y --enablerepo=epel install libmcrypt-devel
yum -y --enablerepo=epel install libtidy-devel

PHPで必要なパッケージをインストールする。

yum -y install libxml2-devel openssl-devel freetype-devel libcurl-devel net-snmp-devel libpng-devel libjpeg-turbo-devel openldap-devel readline-devel gd-devel bzip2-devel libicu-devel libwebp-devel gmp-devel libxslt-devel

ダウンロード・展開

最新バージョンの確認
PHP: Downloads

/usr/local/srcディレクトリを移動する。

cd /usr/local/src

ソースファイルをダウンロードする。

wget http://jp2.php.net/get/php-7.2.5.tar.gz/from/this/mirror

ファイル名がmirrorになっているので、変更する。

mv mirror php-7.2.5.tar.gz

ダウンロードしたファイルを展開する。

tar zxvf php-7.2.5.tar.gz

コンパイル・インストール

展開したディレクトリに移動します。

cd php-7.2.5

コンパイル・インストール

./buildconf --force
./configure --with-libdir=lib64 --with-pic --with-bz2 --with-freetype-dir --with-png-dir --with-xpm-dir --with-gettext --with-gmp --with-iconv --with-jpeg-dir --with-curl --with-webp-dir --with-png-dir --with-openssl --with-pcre-regex --with-zlib --with-layout=GNU --enable-exif --enable-ftp --enable-sockets --with-kerberos --enable-shmop --enable-calendar --with-libxml-dir --with-mhash --with-ldap --with-readline --with-snmp --with-tidy --with-xsl --with-gnu-ld --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/var/lib/mysql/mysql.sock --enable-mbstring --with-gd --with-apxs2=/usr/local/apache2/bin/apxs
make
make install

エラー対策

./configureにて以下の内容のエラーで停止した場合。

configure: error: Cannot find libtidy

libtidy関連のパッケージをインストールする。

yum -y install libtidy libtidy-devel
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/l/libwebp-0.4.3-3.el6.x86_64.rpm
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/l/libwebp-devel-0.4.3-3.el6.x86_64.rpm

この後、./configureが実行できる。

設定

初期設定

設定ファイルphp.iniをソースファイルからコピーする。

cp php.ini-development /usr/local/etc/php.ini

エラーログの出力先を作成、オーナーの変更、パーミッションを変更する。

mkdir /var/log/php
chown daemon /var/log/php
chmod 755 /var/log/php

php.iniの設定

php.iniを編集する。

vi /usr/local/etc/php.ini

変更内容

php.ini
error_log = "/var/log/php/php_errors.log"

expose_php = Off

date.timezone = 'Asia/Tokyo'

post_max_size = 100M

upload_max_filesize = 100M

Apacheの設定

httpd.confを編集する。

vi /usr/local/apache2/conf/httpd.conf

libphp7.soが記入されていることを確認する。

httpd.conf
LoadModule php7_module        modules/libphp7.so

以下の項目をLoadModuleの下に追記する。(場所の指定はありませんが、わかりやすくするため)

httpd.conf
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

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

以上で、apacheを再起動しエラーが表示されず、apacheで設定したhtml及びphpの初期ディレクトリ(標準では/usr/local/apache2/htdocs)にindex.phpを作成phpinfo()コマンドを保存し、ブラウザでPHPの設定内容が表示されればWebサーバ、PHP共に起動が成功です。
この状態ではHTTP2及びHTTPS(SSL)にはなっていません。

index.php
<?php
    phpinfo();
?>

参考

CentOS7.1 64bitのyumリポジトリにEPELを追加 | kakiro-web カキローウェブ
PHP compile errors – CentOS WebPanel Wiki


目次

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした