結構前から、VirtualBox を立ち上げると、「新しいバージョンがでてるよ」というポップアップが出ていた。

「それは分かってるけど、バージョンを上げて色々動かなくなるとやだなぁ」

と思って、そのまま無視していた。

が、「そろそろ上げておくか」と思い、Ver.3.2.4 に上げることにした。

その時は軽い気持ちだったが、結局VirtualBoxで開発できる状態に戻るまで1日がかりになってしまった。

まず引っかかったのは、

  • VirtualBox の GuestAdditions を入れなおす必要があること

そして

  • Apacheの起動スクリプト(/etc/init.d/httpd)を修正するのを忘れていたこと

だった。

2点目が原因でかなり時間がかかった。

Webからアクセスしたが、1分くらいしてタイムアウトしてエラーが表示される。

CakePHPのソースを追っていったが、どうも model のインスタンスを作成する時にエラーとなっているっぽいところがわかった。

「もしかして、本番のDBに接続している?」

と思って、直接書き換えると正常に表示される。

「これかぁ」と思ったが、その元となった根本原因は、

  • DB接続先を環境変数で切り分けていること

だった。

Apache起動シェル(/etc/init.d/httpd)で以下のように環境変数を設定してた。

export CAKE_ENV=development

そして、以下のようにしていた。
[app/config/core.php]

/**
 * set App.environment
 */
	define('ENV_PRODUCTION', 'production');
	define('ENV_STAGING', 'staging');
	define('ENV_DEVELOPMENT', 'development');
	if(isset($_ENV["CAKE_ENV"]) && $_ENV["CAKE_ENV"] == ENV_DEVELOPMENT) {
		Configure::write('App.environment', ENV_DEVELOPMENT);
	} elseif(isset($_ENV["CAKE_ENV"]) && $_ENV["CAKE_ENV"] == ENV_STAGING) {
		Configure::write('App.environment', ENV_STAGING);
	} else {
		Configure::write('App.environment', ENV_PRODUCTION);
	}

さらに、DB設定はこんな感じ。
[app/config/database.php]

	var $default = array(
		'driver' => 'mysql',
		'persistent' => false,
		'host' => 'XXXXXXXX.ne.jp',
		'login' => '????',
		'password' => '????',
		'database' => '????',
		'encoding' => 'utf8'
	);

	function __construct() {
		if(Configure::read('App.environment') != ENV_PRODUCTION) {
			$this->default['host'] = 'localhost';
		}
	}

どうやら、VirtualBoxのバージョンをあげた後に、色んなアプリのアップデートを行って、
Apacheの起動スクリプトも上書きしてしまっていたようだった。

分かってしまえば簡単。
が、分かるまで半日かかってしまった。