我继承了一些PHP源代码,我必须维护它。它是从头开始构建的,没有使用任何框架,只是前开发人员自己创建的。
现在,我问这个:
是否有一种方法可以忽略php.ini/ini_settings中的致命错误,而无需修改代码?
场景:
SomeClass.php:
<?php class SomeClass {
...)?>
index . php:
include("SomeClass.php");
...
include("SomeClass.php");
在我的开发框中,这会抛出一个致命错误异常(因为已经声明了两次SomeClass),这是明显的和预期的行为。
这里是关键:这个源托管在某处,并且它工作。我只是没有访问那个服务器的权限。
我看到了两种情况:
1)。有一种方法可以通过ini设置的2 include来静音此致命错误。这个我必须知道。
2)。前开发人员没有给我确切的,更新的源代码,目前正在运行。然后我必须坚持让他给我最新的源代码,但我只能这样做,如果我100%确定不可能发生#1。
你们觉得怎么样?
我尝试设置一个set_error_handler()
函数,它不会在致命错误时死亡,但是Apache崩溃了。换句话说,PHP 需要失效,这样系统才不会失效。
所以,对不起,我真的不认为有一个解决方案。
致命错误不是来自include函数——只有警告。不过,你会得到致命的要求。使用@include,它甚至不会生成警告。
不鼓励在生产服务器上报告错误。如果脚本没有找到文件,为什么要让用户看到呢?看看这个http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors和http://www.php.net/manual/en/function.set-error-handler.php。后者可能会有所帮助,请参阅该页中的示例。我建议记录错误,而不是显示错误。但这将涉及到代码的一些变通方法。
通知你的开发人员他应该使用__autoload
或spl_autoload
来避免这样的错误…