PHP
バージョンアップ

PHP5.3から5.6へのバージョンアップでつまづいたこと

More than 1 year has passed since last update.

CentOS6.4でphp5.3からphp5.6へアップデートした時につまづいたところをメモ。

知っておくこと

phpをアンインストールしても、起動中のPHPは動く。
apacheを再起動した時に最新版が反映される。

/etc/php.iniをバックアップでとっておく
(後で新しいバージョンのPHPの設定を書き換えるため)

事前にリポジトリを用意

EPEL,remiリポジトリ最新版を入れておく

yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

GDライブラリエラーにそなえて

私の環境ではGDライブラリをインストールしようとすると、libwebp.so.5()(64bit)が必要というエラーがでてうまくできませんでした。ググるとこのエラーは多いようです。ですので、もしlibwebpが入ってなければ事前にインストール。

yum install libwebp

がダメなら直接入れる。

rpm -ivh ftp://mirror.switch.ch/pool/4/mirror/epel/6/x86_64/libwebp-0.4.3-3.el6.x86_64.rpm

PHPを削除

yum remove php*

PHP5.6をインストール

yum install --enablerepo=remi,remi-php56,epel php php-cli php-common php-devel php-mbstring php-pdo php-gd php-mysql php-mcrypt php-xml php-pear php-soap php-pecl-apcu php-mysqlnd

apacheを再起動して完了

/etc/rc.d/init.d/httpd restart

MySQLに接続できないエラー

MySQLユーザーが古い16バイトのパスワードフォーマットであることが原因。

my.cnfのold_passwords=0にするか削除

そして

set password for 'ユーザ名'@'ホスト' = password('パスワード');

で設定しなおして解決

SOAPのエラー

「could not connect to host」というエラーが...

PHP 5.6.x における OpenSSL 関連の変更

ひとまず、動かすには以下のようにcontextをつける

sample.php
$context = stream_context_create([
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    ]
]);

$opt = array(
    'trace' => 1,
    'location' => $url, 
    'stream_context' => $context
);