开发者

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

开发者 https://www.devze.com 2023-03-01 09:27 出处:网络
I inherited some PHP source code, and I have to maintain it. It has been built from scratch using no framework, just the former developer\'s own creation.

I inherited some PHP source code, and I have to maintain it. It has been built from scratch using no framework, just the former developer's own creation.

Now, I ask this:

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

Scenario:

SomeClass.php:

<?php class SomeClass {
...)?>

index.php:

include("SomeClass.php");
...
include("SomeClass.php");

In my 开发者_运维百科development box, this throws a Fatal Error exception (because SomeClass has been declared twice), which is the obvious and expected behavior.

Here is the kicker: This source is hosted somewhere, and it works. I just don't ANY access to that server.

So I see here two scenarios:

1.) There is a way to silence this Fatal Error via 2 includes by an ini setting. This I have to know.

2.) The former developer did NOT give me the exact, updated source code that is currently up and running. I then have to insist that he give me the latest source code, but I can only do this if I am 100% sure that there is no way #1 can happen.

What do you guys think?


I tried setting a set_error_handler() function that doesn't die on fatal errors, but instead Apache crashed. In other words, PHP needs to die so that the system doesn't.

So, sorry, I really don't think there is a solution for that.


Fatal errors don't come from the include function - only warnings. You'd get fatals from require, though. Use @include and it won't even generate the warning.


Error reporting is mostly discouraged on production servers. Why let the user see if your script didn't find a file. Have a look at this http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors and http://www.php.net/manual/en/function.set-error-handler.php. The latter could be helpful, go through the page for examples. I suggest to log errors instead of displaying it. But that will involve some sort of workaround with code.


inform your developer that he should use __autoload or spl_autoload to avoid such errors…

0

精彩评论

暂无评论...
验证码 换一张
取 消