PowerDNS GUIの困った話(その2)。

pdns-guiのインストールは、PHP 5.3以上を使っている環境ではこけます [1] 。理由は、data/symfony/config/php.ymlファイルにある、zend.ze1_compatibility_modeというキーが、PHP 5.3以上ではphp.iniでサポートされなくなったためです [2]

この問題は、pdns-guiの issueに登録されていた のですが、上記のYAMLファイルから上記のキーの行を削除しただけではダメで、YAMLファイルのパース時以外にも、symfony.phpや、data/symfony/bin/symfony.phpで、

if (ini_get('zend.ze1_compatibility_mode'))
{
  die("symfony cannot run with zend.ze1_compatibility_mode enabled.\nPlease turn zend.ze1_compatibility_mode to Off in your php.ini.\n");
}

として別にチェックされているので、

--- a/data/symfony/bin/symfony.php
+++ b/data/symfony/bin/symfony.php
@@ -13,10 +13,12 @@ if (!isset($sf_symfony_lib_dir))
   die("You must launch symfony command line with the symfony script\n");
 }

-if (ini_get('zend.ze1_compatibility_mode'))
-{
-  die("symfony cannot run with zend.ze1_compatibility_mode enabled.\nPlease turn zend.ze1_compatibility_mode to Off in your php.ini.\n");
-}
+if (! (PHP_VERSION_ID > 50300)) {
+  if (ini_get('zend.ze1_compatibility_mode'))
+    {
+      die("symfony cannot run with zend.ze1_compatibility_mode enabled.\nPlease turn zend.ze1_compatibility_mode to Off in your php.ini.\n");
+    }
+}

 // set magic_quotes_runtime to off
 ini_set('magic_quotes_runtime', 'Off');

のように、PHPのバージョンをチェックをさせるようにしました。YAMLは条件分岐を入れられない?と思うので、これは素直にINSTALLに注意書きを追記して、 issueにパッチを登録 しておきました。

[1]むしろこっちが”その1”じゃないか、というツッコミは無しで。w
[2]検証で使っている環境はUbuntu 10.04 LTSで、PHP 5.3.2なので。