PHP 5.3, кажется, падает на скриптах, когда у нас включен register_globals

Apache segfaults, когда у нас включен register_globals с php 5.3. Я знаю, что мы не должны этого делать, и у нас это сейчас отключено, но некоторые из нашего очень старого кода нуждаются в этом. У кого-нибудь есть намеки на то, что попробовать / посмотреть, чтобы решить эту проблему?

Спасибо

1 ответ

Решение

лоскутный подход
Вы можете включить некоторый код в самом начале очень старого скрипта, вы можете использовать один из хорошо известных кодов совместимости register_global, который вы можете найти в Google.

Примером может быть:

// ################# :: Register Globals Compatibility :: #################
$globals_test = @ini_get('register_globals');
if ( isset($globals_test) && empty($globals_test) ) {
// These still need some work :: Cookie|Server|Env are ok now.
if ( !empty($HTTP_GET_VARS) )  { extract($HTTP_GET_VARS, EXTR_SKIP);  }
if ( !empty($HTTP_POST_VARS) ) { extract($HTTP_POST_VARS, EXTR_OVERWRITE); }
define('_GLOBALS', FALSE);
} else {
    define('_GLOBALS', TRUE);
}

Авто-пэчворк подход

Можете добавить:

php_value   auto_prepend_file  "/path/to/file/with_the_above_code" 

в ваш раздел .htaccess или VirutualHosts для автоматического выполнения работы без необходимости касания какого-либо существующего сценария.

Разумный подход
Конечно, лучше всего было бы переписать старый код, так как register_globals - хорошо известное зло.

Другие вопросы по тегам