我遇到了一个奇怪的情况。
当类实例传递给方法并且尚未设置类实例时,服务器会抛出 500 错误,而不是捕获错误。
这在 99% 的时间内都会在测试期间发生,但我想确保用户永远不会看到这 1%
顺便说一句:我已经检查了我的.htaccess
和apache2
文件 <= 它们是正确的
我需要在我的php.ini
文件中更改什么或类似的东西以避免每次发生这种情况时出现500
错误?
下面是一些示例代码:
<?php
function querysomething ($connection_to_mysql, $query) {
try {
$query = $connection_to_mysql->prepare("SELECT * FROM table WHERE name=?");
$query->bind_param("s", $name);
$execute = $query->execute();
//etc...
if (!$execute) {
throw new Exception ("some error");
}
} catch (Exception $e) {
//some error handling
}
}
?>
如果未实例化$connection_to_mysql
对象,服务器将引发500
错误
在查询之前,我是否需要每次检查$connection_to_mysql
是否确实存在?
使用 set_error_handler
/set_exception_handler
显示特定于 php 的致命错误页面。
在对捕获Fatal Errors
进行了一些额外的阅读后,我可以遇到以下内容: 如何捕获PHP致命错误
而不是使用 set_error_handler
& set_exception_handler
来捕获所有错误并处理后记,请使用 register_shutdown_functions
。
这将允许您重定向到页面(例如:500.php或其他任何页面),记录错误,并在需要时发送电子邮件。