datadevil Asked: 2009-08-27 23:51:40 +0800 CST2009-08-27 23:51:40 +0800 CST 2009-08-27 23:51:40 +0800 CST 当我们打开 register_globals 时,php 5.3 似乎在脚本上崩溃 772 当我们使用 php 5.3 打开 register_globals 时出现 apache 段错误。我知道我们不应该这样做,我们现在已经关闭了它,但是我们的一些非常旧的代码需要它。有人对尝试/查看什么来解决这个问题有任何提示吗? 谢谢 apache-2.2 php5 server-settings 1 个回答 Voted Best Answer drAlberT 2009-08-28T00:10:11+08:002009-08-28T00:10:11+08:00 拼凑方法 您可以在非常旧的脚本的最开始包含一些代码,您可以使用众所周知的 register_global 兼容性代码之一,您可以在谷歌上找到。 一个例子可能是: // ################# :: 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 是众所周知的邪恶。
拼凑方法
您可以在非常旧的脚本的最开始包含一些代码,您可以使用众所周知的 register_global 兼容性代码之一,您可以在谷歌上找到。
一个例子可能是:
自动修补方法
你可以加:
到您的.htaccess或VirutualHosts 部分,以便自动完成这项工作,而无需触摸任何现有脚本。
明智的做法
当然最好的办法是重写旧代码,因为 register_globals 是众所周知的邪恶。