PHP-5.4的严格标准错误。?

PHP-5.4的严格标准错误。?,php,standards,strict,Php,Standards,Strict,我(和其他很多人一样)看到PHP5.4出现了严格的标准错误 严格标准:第64行的/home/xxxxxx/public_html/xxxxxx/init.php中只能通过引用传递变量 5.3和5.4之间一定有变化。互联网上所有的“智慧”似乎都是关于关闭错误信息。在本例中,这是一个我不愿尝试解决的程序(由其他人编写的1000行) 如果我关闭错误报告,则脚本不会执行 我正试图与剧本的作者一起解决这个问题 还有其他解决办法吗?是否可以在.htaccess文件中放置允许“非严格标准”的设置?您需要进入p

我(和其他很多人一样)看到PHP5.4出现了严格的标准错误

严格标准:第64行的/home/xxxxxx/public_html/xxxxxx/init.php中只能通过引用传递变量

5.3和5.4之间一定有变化。互联网上所有的“智慧”似乎都是关于关闭错误信息。在本例中,这是一个我不愿尝试解决的程序(由其他人编写的1000行)


如果我关闭错误报告,则脚本不会执行

我正试图与剧本的作者一起解决这个问题


还有其他解决办法吗?是否可以在.htaccess文件中放置允许“非严格标准”的设置?

您需要进入php.ini文件并分配以下内容:

 error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT     

这将允许您显示除已弃用和非严格标准之外的所有警告。

如果您希望修复错误而不是忽略它(建议的):


您基本上有两个选项:修复错误或关闭严格的错误消息(例如,使用
错误报告(E_ALL^E_strict)
)。顺便说一下……代码行是这样一个混乱的事情:define(“INSTALL_URL”、$protocall.$host_name.str_replace(“/”)、array_pop(explode(“/”、$服务器['REQUEST_URI'))、“/”、$服务器)['REQUEST_URI']);FWIW,那一行的问题是
数组_pop
,它想修改它的参数(它删除项目并返回它),但是不能,因为它被赋予了
explode
的返回值,而不是一个变量。“如果我关闭错误报告,那么脚本就不会执行。”这听起来很不可能(除非你的脚本实际上已经失败了,而你只是在严格的标准通知中看不到它)。我在php.ini中这样做的可能重复。脚本仍然执行并返回空白(有错误的迹象)。我在脚本错误报告中添加了错误报告(E_ALL);并且仍然没有报告错误。因为它没有打印任何错误,这意味着它正在执行预期的操作。换句话说,它允许使用您喜欢的非严格标准。因此,问题不在于严格标准错误是否报告,而在于脚本中的某个内容。请推断,确实不是您的脚本错。
$uri = explode("/",$_SERVER['REQUEST_URI']);
define("INSTALL_URL" , $protocall.$host_name . str_replace("/".array_pop($uri),"/",$_SERVER['RE‌​QUEST_URI']));