My Favorites

このサイトのPHPを7.1.1へ

PHP 7.1.1 phpinfo()
ここはもともとPHP 5.4系で動かしていたが、PHP 7系を試したくなりmake installすることに。と言っても、複数のサイトがVirtual Hostで入ってる関係もあり、大元をアップデートすると、他のサイトに影響があるかも知れない。そこでとった作戦は…。

CGI(FastCGIではないのでオーバーヘッドはあるものの)にして、.htaccessで任意に指定、以下のフォルダだけPHP 7が動く方法だ。これなら他のサイトに影響も出ないし、何か不都合があった場合、.htaccessを編集すれば即5.4系に戻すことができる。以降、簡単に手順のメモ。

1)make install
/usr/local/src/php-7.1.1へソースコードを展開

./configure –prefix=/usr/local/lib/php-7.1.1 \
–with-config-file-path=/usr/local/lib/php-7.1.1 \
–with-pic \
–with-bz2 \
–with-curl \
–enable-gd-native-ttf \
–with-iconv \
–with-jpeg-dir \
–with-png-dir \
–with-zlib \
–with-layout=GNU \
–enable-exif \
–enable-ftp \
–enable-sockets \
–enable-sysvsem \
–enable-sysvshm \
–enable-sysvmsg \
–enable-wddx \
–with-kerberos \
–enable-shmop \
–enable-calendar \
–with-libxml-dir \
–with-mysqli=mysqlnd –enable-mysqlnd –with-pdo-mysql=mysqlnd \
–with-gd \
–disable-dba \
–enable-mbstring \
–enable-mbregex \
–enable-pcntl \
–with-xmlrpc \
–enable-zip \
–enable-cgi \
–enable-opcache \
–with-gettext \
–with-pear
※Wordpressを動かすには、このぐらいのオプションが必要らしい(–with-openssl=はOpenSSLのバージョンが1.0.1以上。環境が合わない場合は、OpenSSLからmake)

make
make test
make install
※configureに指定した/usr/local/lib/php-7.1.1へいろいろインストールされる

2)php.iniを編集
cp /usr/local/src/php-7.1.1/php.ini-production /usr/local/lib/php-7.1.1/php.ini

date.timezone = “Asia/Tokyo”
mysqli.default_socket = “/var/lib/mysql/mysql.sock”
pdo_mysql.default_socket= “/var/lib/mysql/mysql.sock”

3)php-cgiを/var/www/cgi-binへコピー
cp /usr/local/lib/php-7.1.1/bin/php-cgi /var/www/cgi-bin/php-7.1.1

4)/etc/httpd/conf/httpd.confへAction追加
Action php-script-7.1.1 /cgi-bin/php-7.1.1

5)該当ディレクトリの.htaccessへAddHandlerを追加、phpinfo()などで確認
AddHandler php-script-7.1.1 .php

ここまではうまく行ったのだが、Wordpressのログイン画面でデータベース接続エラー。error_logには

”mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password]”

の文字…。

ググって見ると、mysqliではMySQLの旧式16桁のハッシュには未対応で、41桁のハッシュを使うパスワードへ変更する必要があるとのこと。

ただ別のサイトにも使いまわしてるuser/passwordなので、変更すると逆に接続できなくなる可能性があり、新規userを作り、このBLOGに使っているDBへの権限を与えることにした。

/etc/my.cnfにold_passwords = 0を明示的に書くと、以降パスワード作成時に41桁のハッシュが使われる。また、既存の16桁でも古いシステムやコマンドラインのmysqlからはログインできるのでほっと一息。

新しく作ったuser/passwordをwp-config.phpに書き込み作業完了。無事、Wordpressが起動した。またこの時、DB_HOSTをlocalhostから127.0.0.1へ変更しないと接続できないので要注意!

追記1:どうもWP Super Cacheがうまく動いていないので(*.tmpで0byteになる)、WP Fastest Cacheへ変更
追記2:mod_fcgidを使ってFastCGIへ変更

モバイルバージョンを終了