PHP5.2 でCakePHP2が動かない?!
ラピッドサーバの古いVPS環境でCakePHP2を動かそうとしたら、
Fatal error: Class 'RuntimeException' not found
でまったく動かない。とりあえず、PHPのバージョンを確認
# php -v
PHP 5.2.17 with Suhosin-Patch 0.9.7 (cli) (built: Jan 12 2011 20:44:22)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
PHPのバージョンは5.2。CakePHP2の動作には問題ないはず。
そもそも、RuntimeExceptionクラスはどこが提供しているのか調てみると。。
PHP公式だった。
マニュアルを見ると、RuntimeExceptionは SPLという機能の一部で、PHP5.1以上なら標準で付属してますとの事。サンプルにあるコードでSPLが使えるか検証。
<?php
print_r(spl_classes());
?>
Fatal error: Call to undefined function spl_classes()
何も使えません。
という事は、このサーバ固有のPHP設定がされているようなので、変更可能かラピッドVPSのマニュアルを検索してみた。
ラピッドVPSでのPHP環境方法
マニュアルを見ると、vinstall コマンドで各種環境変更を行う仕組みになっていた。まずは実行する
# vinstall
Select an option:
? view list of programs
install enter install mode
module_name view information about program name
quit exit vinstall program
-->
メニューが起動する。?で変更できるプログラム一覧を確認できる。今回は、php5.2の変更を行うので、
-->install
Enter module name to install -->php5.2
make configとかでよく見る画面がでてきた。ここでモジュールの有効/無効を設定できる。(カーソルで移動、スペースでON/OFF)
よく見るとSPLだけでなく、足りないモジュールがあったので以下を有効な状態にした
* bz2
* CTYPE
* CURL
* DBA
* DOM
* GD
* GETTEXT
* HASH
* ICONV
* JSON
* MBSTRING
* MCRYPT
* MHASH
* MYSQL
* MYSQLI
* OPENSSL
* PDO
* PDO_MYSQL
* SESSION
* SIMLEXML
* SOCKETS
* SPL
モジュールの追加をしたので
# service httpd restart
でWebサーバの再起動を行なっておく。
再トライ
CakePHPを再度導入してみる。動いた! もう問題なさそう