PHP5.2.0へのバージョンアップと、eAccelerator0.9.5
PHP (55 items)
2006年11月22日
2006年11月2日にPHP5.2.0がリリースされました。
これに伴い、即座にバージョンアップとしたかったんですが、中々どうして今回のバージョンアップはすんなりいきません。。
apache2環境で、Windows・Linux共バージョンアップしてみましたが、これについてメモ。
これに伴い、即座にバージョンアップとしたかったんですが、中々どうして今回のバージョンアップはすんなりいきません。。
apache2環境で、Windows・Linux共バージョンアップしてみましたが、これについてメモ。
まず、Windows版は以下の記事が参考になると思います。
書いてある通り、前のバージョン(当方は5.1.2でした)は削除して、新たにインストーラーで5.2.0をインストールしました。
ただ、所謂簡単にデフォルト設定でトントントンとボタン押しながら簡単にインストールできる風ではなく、ちゃんと自分の環境やら理解した上でインストールしなければいけません。
私は何回かやり直す羽目になりましたが、すんなりいけば簡単に5.2.0は入ります。
ただ、5.2.0上で既存のプログラムが正常に動くかというのが問題で、例えば私なんかは、php.iniの設定で今回追加になったallow_url_includeがデフォルトOffに設定されているので、これをOnにしたり(今まではallow_url_fopenがOnになっていれば通っていたロジックが通らなくなりました)、、まあこれはWindows版だけの話ではないですが、とにかく場合によってはphp.iniの設定を見直す必要はあると思います。
eAcceleratorについては、コンパイル済のものを配布してくれているサイトもあって(Windows用 eAcceleratorの配布)導入してみましたが、どうもeAccelerator0.9.5とPHP5.2.0の関係で動きが変になる感があったのでこれは止めました。(これについては次のLinux版で)
で、次にLinux版は以下の記事が参考になると思います。
まさに書いてある通り、
とコマンド叩いていけば、インストールできました。
途中、configure時にmysqlヘッダーファイルが無いよとか、c++が云々とか怒られたので、
で必要なものは入れました。
eAccelerator0.9.5ですが、インストールについては当サイトで0.9.5ベータ版を入れた時の記事、、
PHP5.1.2にeAccelerator0.9.5-beta2をインストール
これの感じでいけます。
ちなみに、PHPの前のバージョンで既にeAcceleratorを入れている場合は、一度eAcceleratorを削除してからインストールしないと、PHPのZend Engine APIのバージョンが違いますと怒られます。
それと前回記事では漏れていますが、eAccelerator0.9.5から導入された動作状況を確認するためのcontrol.php、これを動かす為に、php.iniのeAcceleratorの項目には以下の設定を記述する必要があります。
ここで、そもそもeAccelerator0.9.5はPHP5.2.0に対応してるの?の疑問もありましたが、ダウンロードサイトには、
とありますので、まあいけるんでしょうとなります。
・・・なんですが、これがまた若干おかしいんではないか?と思っている今であります。
もちろん、動かすプログラムによりますが、こちらではPHP5.2.0上では問題なく動いていたロジックが、eAcceleratorを入れた途端、、
と怒られてしまいました。同様の現象が他でも起きているようです。
こちらはZend Frameworkではなく、自分で作ったフレームワークを使用しているのですが、class内のprotected変数にアクセスする部分がエラーとなっているようです。
・・ってか、なんでeAccelerator入れた時だけエラーになんねんという事で、これについてはまだ解決していません。
とにかく、PHP5.2.0、また同時にeAccelerator0.9.5へバージョンアップする際は、かなり慎重に行ったほうがいいように思います。。
<関連記事>
PHP5.2.4へのバージョンアップと、eAccelerator0.9.5.2
My RSS 管理人 ブログ++: Windows版 PHP 5.2 へのバージョンアップは慎重に
apache2 と apache2.2 が別物であるのと同様、PHP 5.1.x と PHP 5.2 は かなりの別物 ですのでバージョンアップにはそれなりの時間と精神的余裕を確保できたときに行うことをお勧めします。
書いてある通り、前のバージョン(当方は5.1.2でした)は削除して、新たにインストーラーで5.2.0をインストールしました。
ただ、所謂簡単にデフォルト設定でトントントンとボタン押しながら簡単にインストールできる風ではなく、ちゃんと自分の環境やら理解した上でインストールしなければいけません。
私は何回かやり直す羽目になりましたが、すんなりいけば簡単に5.2.0は入ります。
ただ、5.2.0上で既存のプログラムが正常に動くかというのが問題で、例えば私なんかは、php.iniの設定で今回追加になったallow_url_includeがデフォルトOffに設定されているので、これをOnにしたり(今まではallow_url_fopenがOnになっていれば通っていたロジックが通らなくなりました)、、まあこれはWindows版だけの話ではないですが、とにかく場合によってはphp.iniの設定を見直す必要はあると思います。
eAcceleratorについては、コンパイル済のものを配布してくれているサイトもあって(Windows用 eAcceleratorの配布)導入してみましたが、どうもeAccelerator0.9.5とPHP5.2.0の関係で動きが変になる感があったのでこれは止めました。(これについては次のLinux版で)
で、次にLinux版は以下の記事が参考になると思います。
まさに書いてある通り、
wget http://jp.php.net/distributions/php-5.2.0.tar.gz
tar xzvf php-5.2.0.tar.gz
cd php-5.2.0
./configure --with-apxs2=/usr/sbin/apxs〜〜〜〜
make
make installとコマンド叩いていけば、インストールできました。
途中、configure時にmysqlヘッダーファイルが無いよとか、c++が云々とか怒られたので、
yum install mysql-devel
yum install gcc-c++で必要なものは入れました。
eAccelerator0.9.5ですが、インストールについては当サイトで0.9.5ベータ版を入れた時の記事、、
PHP5.1.2にeAccelerator0.9.5-beta2をインストール
これの感じでいけます。
export PHP_PREFIX="/usr/local"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make
make install
ln -s /usr/local/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so /usr/local/lib/php/extensions/eaccelerator.soちなみに、PHPの前のバージョンで既にeAcceleratorを入れている場合は、一度eAcceleratorを削除してからインストールしないと、PHPのZend Engine APIのバージョンが違いますと怒られます。
それと前回記事では漏れていますが、eAccelerator0.9.5から導入された動作状況を確認するためのcontrol.php、これを動かす為に、php.iniのeAcceleratorの項目には以下の設定を記述する必要があります。
eaccelerator.allowed_admin_path = "control.phpが存在するパス"ここで、そもそもeAccelerator0.9.5はPHP5.2.0に対応してるの?の疑問もありましたが、ダウンロードサイトには、
The final version of 0.9.5 has been released. It fixes a huge amount of bugs and adds php 5.1 and php 5.2 support.
とありますので、まあいけるんでしょうとなります。
・・・なんですが、これがまた若干おかしいんではないか?と思っている今であります。
もちろん、動かすプログラムによりますが、こちらではPHP5.2.0上では問題なく動いていたロジックが、eAcceleratorを入れた途端、、
Fatal error: Cannot access protected property〜〜と怒られてしまいました。同様の現象が他でも起きているようです。
システム開発の備忘録: [Cannot access protected property Zend_Controller_Dispatcher]
こちらはZend Frameworkではなく、自分で作ったフレームワークを使用しているのですが、class内のprotected変数にアクセスする部分がエラーとなっているようです。
・・ってか、なんでeAccelerator入れた時だけエラーになんねんという事で、これについてはまだ解決していません。
とにかく、PHP5.2.0、また同時にeAccelerator0.9.5へバージョンアップする際は、かなり慎重に行ったほうがいいように思います。。
<関連記事>
PHP5.2.4へのバージョンアップと、eAccelerator0.9.5.2
前の記事 次の記事