本家のお世話-#109。(PHP 5.5.16 から PHP 5.6.0 への移行)

 予定通りというか, Aug-27 21:52:22 に Windows 版の PHP5.6.0 が出た。ここのところよくあるのだが, php.net より半日ばかり早かった。そんなわけで,今日の午後, PHP 5.5.16 から PHP 5.6.0 に移行した (Windows7 HP + SP1 (x86))。で, ChangeLog

 「PHP 5.6.x にしても,現在のコードはほぼそのままで動きます。ほんのわずか,考慮すべき few incompatibilitiesnew features がありますので,これについては,バージョン変更の前にテストしておいてください」ということらしいのだが,うちの環境でも,コードの書き換えは特に必要なかった。もっとも,我が家の場合は, PHP 5.5.16 から PHP 5.6.0 だから,すごく古いバージョンからとなれば,それなりに対処が必要になる。

 そうは言いつつ, php.ini はだいぶ変えた。というのが, PHP 5.6.0 ではデフォルトで UTF-8 になったので, mbstring についての細かいカスタマイズはいらないだろうと思ったからだ。

【注】 ところで,PHP スクリプトの開発環境を作るのでない限りは, php.ini の元ファイルには, php.ini-production INI file を使うべきである。これは,オフィシャルの INI 内にちゃんと書いてあるのだが,いまだに php.ini-development INI file の使用を勧めているサイトもあって,困ったもんだと思っていたので,この際明記しておく。

 以下に今回作った PHP 5.6.0 用の php.ini の変更点を示す。 Drive_SV はサーバソフト用のパーティションである。

  デフォルト カスタム
1 output_buffering = 4096 output_buffering = Off
2 disable_functions = disable_functions =”shell_exec, suexec, passthru, phpinfo”
3 expose_php = On expose_php = Off
4 ; extension_dir = "ext" extension_dir = "Drive_SV:\PHP\ext\"
5 allow_url_fopen = On allow_url_fopen = Off
6 ;extension=php_curl.dll extension=php_curl.dll
7 ;extension=php_gd2.dll extension=php_gd2.dll
8 ;extension=php_mbstring.dll extension=php_mbstring.dll
9 ;extension=php_mysqli.dll extension=php_mysqli.dll
10 ;extension=php_openssl.dll extension=php_openssl.dll
11   zend_extension= "Drive_SV:\PHP\ext\php_opcache.dll"
12 ;date.timezone = date.timezone ="Asia/Tokyo"
13 ;sendmail_from = me@example.com sendmail_from = My email address
14 mysql.allow_persistent = On mysql.allow_persistent = Off
15 ;opcache.enable=0 opcache.enable=1
16 ;opcache.memory_consumption=64 opcache.memory_consumption=128
17 ;opcache.interned_strings_buffer=4 opcache.interned_strings_buffer=8
18 ;opcache.max_accelerated_files=2000 opcache.max_accelerated_files=4000
19 ;opcache.revalidate_freq=2 opcache.revalidate_freq=60
20 ;opcache.fast_shutdown=0 opcache.fast_shutdown=1

 1 と 14 の設定はサーバの環境によっては,不具合が生じることがあるかもしれない。 11 および 15 – 20 は OPcache のためなので, OPcache を使わない場合は,デフォルトのままでよい。移行から1日。 php_opcache.dll でエラー頻発。解決策がわかるまで使用中止にした。 mbstring の細かい設定を変えたことで,何か影響が出るかなぁ。様子見の予定。

 MySQL Extension は使うのをやめた。うちの環境だと,もう MySQLi Extension だけでいいようだ。

 現時点の自鯖の環境。

 おっと,書き忘れるとこだったが,今回,実は,「Bad Host request」が出た。犯人は, BulletProof Security だった(爆笑)。そんなわけで,1回ヤツを停止後, PHP を移行し,改めて有効にした。これはぬれぎぬ。犯人は, php_opcache.dll だった。 BulletProof Security くん,ごめんなさい。

「本家のお世話-#109。(PHP 5.5.16 から PHP 5.6.0 への移行)」への5件のフィードバック

  1. おはようございます。

    うちはまだphp5.5です。まだパッケージがRC4のまま
    休み中になるんじゃないかな?

    pleskのnginxを色々いじっていたんですが、どうも業務と関係ないところでファイルシステムのエラーがでてるらしくそれの対応中です。

    日本語のrpmパッケージが壊れたり、どうも変なエラーがおおいですね。pleskはくせがありすぎます。

    1. くりくりさん,こんばんは。

      拝見しました。やっときましたね。

      お返事を書こうと思ったら,うちのからBad Host requestが戻ってきました。昨日は,BulletProof Securityをいじった後で直ったので,このプラグインのせいだと思ってたのですが,どうも違うなという感触。
      改めて調べたら, php_opcache.dll が原因で, Apache が必死で再起動を繰り返していました。 php_opcache.dll は Apache の管轄外なので,当然ながら効果なし。 php.ini で OPcache を無効にしてやって再起動したら,直りました。 PHP のバグ報告に行った方がいいかなぁ。

  2. おはようございます。

    apache2.4とphp5.6opcacheがトラブルになるみたいですね。
    superweibu.mydns.jpのphpはapache2.2が処理するようにしていますが、特にエラーはでていませんでした。
    また、php-fpmの方も出力されていませんでしたね。
    動作の方も特におかしいところもありません。

    >Apache が必死で再起動を繰り返していました。
    フリーズすることはよくありましたけど、 再起動をくりかえすとかめずらしいですね。

    >php.ini で OPcache
    新しいマイナーバージョンがでるまで無効化するほうがいいのかもしれませんね。

    >PHP のバグ報告に行った方がいいかなぁ。
    http://bugs.php.net
    man phpで調べたらこんなのみつけました。

    1. くりくりさん,こんばんは。

      > 再起動をくりかえすとかめずらしいですね。
      そうなんですか。 php5ts.dll のときも, Windows の Apache はどちらかというと,激しくリスタートを繰り返していました。サイトからのアクセスだと,どっちにしても応答がない形になるんですが。

      > apache2.4とphp5.6opcacheがトラブルになるみたいですね。
      これを探してみたのですが,書いてあるところが見つけられなくて…… httpd.exe + php_opcache.dll の場合だけなのかもしれませんね。

      http://bugs.php.net ,ありがとうございます。一応書き込みに行ってきました。 php5ts.dll のときも相談には行ったんですが,こちらの知識が乏しすぎて思うように質問ができなかったので,今回も同じ羽目に陥るかもしれません(汗)。Win の apache2.4 + PHP5.6 + OPcache という組み合わせがそれほど多くないと思うので,気おくれを封じ込めて書き込みしてきました(爆)。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください