是否有一种方法可以忽略PHP .ini/ini_settings中的致命错误,而无需修改代码


PHP - Is there a way to ignore fatal errors in php.ini/ini_settings only without modifying the code?

我继承了一些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。后者可能会有所帮助,请参阅该页中的示例。我建议记录错误,而不是显示错误。但这将涉及到代码的一些变通方法。

通知你的开发人员他应该使用__autoloadspl_autoload来避免这样的错误…