PHP7.1.25をCentOS6にソースインストール
篠原 隆司
アフィリエイト広告を利用しています
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です
覚書です。
ところどころ省いています。
実践環境で使う場合はご注意ください。
php7.2.13を入れたけど、動かしたいシステムがphp7.2系は対応してなかったみたいなのでphp7.1系の最新版を入れます。ちなみにphp7.2.13は消さずに、php7.1.25と共存できる形としています。
特徴
- ソースコードからのインストール
- 複数バージョンの共存
特定バージョンでの開発や動作確認など開発環境での用途を目的としています。
環境
実施日 | 2018-12-14 |
サーバ | さくらのVPS 2G![]() |
OS | CentOS 6.10 |
rpm -qa | grep centos-release
bash
centos-release-6-10.el6.centos.12.3.x86_64
事前準備
PHP 7.1.25
/tmp/php-7.1.25.tar.gz
PHPダウンロードページからダウンロードして、/tmp にアップ
MySQL
事前にMySQLクライアントとして使うMySQLをインストールしておきます(インストール手順は別の記事で後日)
MySQLを使わない場合、他のデータベースを使う場合は、以降の configure を調整してください
libxml2
libxml2-2.9.8
PHP7.0.0からは 2.9.0 以上が良さそうです。
PHP Predefined Constants の 「Only available in Libxml」
ここにある定数を使わないなら古いバージョンでも動きます。
インストール
設定
DIR_SOURCE=/tmp PHP_VERSION=7.1.25 MYSQL_VERSION=5.5.41 MYSQL_TITLE=mysqlnd MYSQL_CLIENT=mysqlnd MYSQLI_CLIENT=mysqlnd MYSQLPDO_CLIENT=mysqlnd
bash
事前準備
# /usr/local/src にディレクトリを作る mkdir /usr/local/src/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE # ↑で作ったディレクトリに移動 cd /usr/local/src/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE # /tmp にアップしておいた tar.gz を移動 cp $DIR_SOURCE/php-$PHP_VERSION.tar.gz /usr/local/src/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE/php-$PHP_VERSION.tar.gz # 解凍 tar xzf php-$PHP_VERSION.tar.gz # 解凍先に移動 cd php-$PHP_VERSION
bash
--with-imap を付ける場合
yum install libc-client-devel
bash
--with-mcrypt を付ける場合
yum install libmcrypt-devel
bash
configure
./configure \ --prefix=/usr/local/lib/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE \ --program-suffix=-$PHP_VERSION-mysqlc-$MYSQL_TITLE \ --with-config-file-path=/usr/local/lib/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE \ --with-libdir=lib64 \ --with-pic \ --with-curl \ --with-freetype-dir=/usr \ --with-png-dir=/usr \ --with-jpeg-dir=/usr \ --with-gettext \ --with-iconv \ --with-layout=GNU \ --with-kerberos \ --with-unixODBC=shared,/usr \ --with-libxml-dir=/usr/local/lib/libxml2-2.9.8 \ --with-gd \ --with-zlib \ --with-mysqli=$MYSQLI_CLIENT \ --with-pdo-mysql=$MYSQLPDO_CLIENT \ --with-mysql-sock=/var/lib/mysql/mysql.sock \ --with-openssl \ --without-pear \ --enable-cgi \ --enable-mbstring \ --enable-cli \ --enable-zip \ --enable-gd-native-ttf \ --enable-exif \ --enable-ftp \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-sysvmsg \ --enable-wddx \ --enable-shmop \ --enable-calendar \ --disable-debug \ --with-imap=/usr \ --with-imap-ssl \ --enable-intl \ --with-mcrypt
bash
yumインストールしたものを使うなら(バージョン古い)
--with-libxml-dir=/usr
インストール
make make test make install
bash
パスを通す
# セット echo 'PATH=$PATH:'"/usr/local/lib/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE"/bin >> /etc/profile.d/php.sh echo "export PATH" >> /etc/profile.d/php.sh # 確認 cat /etc/profile.d/php.sh # 反映 source /etc/profile.d/php.sh
bash
php.iniを設定
# php.ini-development を php.ini としてコピーして配置 cp /usr/local/src/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE/php-$PHP_VERSION/php.ini-development /usr/local/lib/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE/php.ini # タイムゾーンを Asia/Tokyo に変更 sed -i -e "s/^;date\.timezone =[^A-Za-z]*$/date.timezone =/g" /usr/local/lib/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE/php.ini sed -i -e "s/^date\.timezone =[^A-Za-z]*$/date.timezone = Asia\/Tokyo/g" /usr/local/lib/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE/php.ini # mysql のパスを変更 sed -i -e "s/^mysql\.default_socket =$/mysql.default_socket = \/var\/lib\/mysql\/mysql.sock/g" /usr/local/lib/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE/php.ini sed -i -e "s/^mysqli\.default_socket =$/mysqli.default_socket = \/var\/lib\/mysql\/mysql.sock/g" /usr/local/lib/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE/php.ini sed -i -e "s/^pdo_mysql\.default_socket=$/pdo_mysql.default_socket = \/var\/lib\/mysql\/mysql.sock/g" /usr/local/lib/php-$PHP_VERSION-mysqlc-$MYSQL_TITLE/php.ini
bash
確認
# php.iniのタイムゾーン grep -E 'date.timezone|default_socket' /usr/local/lib/php-7.1.25-mysqlc-mysqlnd/php.ini # php.ini vi /usr/local/lib/php-7.1.25-mysqlc-mysqlnd/php.ini
bash
バージョン
php-7.1.25-mysqlc-mysqlnd -v
bash
PHP 7.1.25 (cli) (built: Dec 14 2018 19:39:56) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
あとがき
mysqlnd について
昔はMySQLクライアントを複数から選択できていたので、「php-バージョン-mysqlc-クライアント」のようにしていたけど、もうmysqlnd一択みたいな感じなので名前に入れなくても良いかなと思います。
詳しくはこのあたり。
インストール > 設定の MYSQL_VERSION と MYSQL_CLIENT は使っていないので不要ですね。
どちらも過去のPHPの名残りです。