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にパッチを登録 しておきました。