Symfony + php eaccelerator でエラーが出た、そんなとき

OSはFC7とFC8です。

php-eaccelerator を入れたいと思います。

はい。yum install php-eaccelerator で出来ます。

終了。

と行きたいところなんですが、Symfonyがエラーを出力していませんか?

Fatal error: Uncaught exception 'sfStopException'

調べてみると、インストールされるバージョンにはバグがあるようです。

Symfonyが対応している php5は、Javaのように(あるいはその他の言語のように)例外を投げる(throw)ことができます。当然それをキャッチすることもできます。

Symfonyはこのエラーハンドリングの枠組みを使っています。

ところが、php eaccelerator の特定のバージョン(0.9.5.1)では例外がキャッチされないようです。そのため上述のエラーが出ます。

でも、0.9.5.2ではFIXされている模様

php-eacceleratorを使いたいならバージョンアップしかありません。

今回は、すでにyumでphp-eacceleratorを入れていましたので、新バージョンのrpmを作成してから、rpmのアップグレードインストールをしてみようと思います。

◇rpmを作ろう(生々しいログでお届けします)

○build の準備
sudo yum install rpm-build

vim ~/.rpmmacros
-----
%_topdir /home/sugiyama/rpmbuild
%debug_package %{nil}
%packager Tatsuhiko Sugiyama <sugiyama@unicus.jp>
-----
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
○build
cd ~/rpmbuild/SRPMS/
sudo yum install yum-utils
yumdownloader --source php-eaccelerator
rpm -ivh php-eaccelerator-0.9.5.1-3.fc7.src.rpm

cd ~/rpmbuild/SOURCES/
wget http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2

cd ~/rpmbuild/SPECS/
vim php-eaccelerator.spec
-----
Version: 0.9.5.1
Release: 3%{?dist}
↓
Version: 0.9.5.2
Release: 1%{?dist}
-----

# テストビルド(bpはコンパイルの手前まで)
rpmbuild -bp php-eaccelerator.spec

# パッケージ足りない
sudo yum install -y php-devel autoconf automake libtool

# テストビルド(bcはコンパイルまで。)
rpmbuild -bp php-eaccelerator.spec
rpmbuild -bc php-eaccelerator.spec

# 足りない
sudo yum install -y gcc

# テストビルド(baはバイナリパッケージとソースパッケージのビルド。bbだとバイナリパッケージだけのビルド)
rpmbuild -bp php-eaccelerator.spec
rpmbuild -bc php-eaccelerator.spec
rpmbuild -ba php-eaccelerator.spec

# 成功したのでchangelog追記
vim php-eaccelerator.spec
-----
* Thu Sep 13 2007 Tatsuhiko Sugiyama <sugiyama@unicus.jp> 0.9.5.2-1
- Update to 0.9.5.2.
-----

# 本気ビルド(アーキテクチャの指定と、不要なファイルを消すためのオプション)
rpmbuild -ba php-eaccelerator.spec -\-target x86_64 -\-clean -\-rmsource -\-rmspec

# インストール
sudo
rpm -Fvh /home/sugiyama/rpmbuild/RPMS/x86_64/php-eaccelerator-0.9.5.2-1.x86_64.rpm
# Symfonyのキャッシュのクリア
cd <Symfonyプロジェクトのトップ>
./symfony cc
または
./symfony clear-cache
# apache再起動
sudo /etc/init.d/httpd restart
以上!

コメントを残す

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>