类实例抛出内部服务器错误500(PHP,MYSQLi)

时间:2012-08-08 16:07:03

标签: php apache mysqli internal-server-error

我的情况很奇怪。

将类实例传递给方法&如果没有设置类实例,服务器会抛出500错误,而不是捕获错误。

这种情况在99%的测试期间发生,但我想确保用户永远不会看到它的1%

顺便说一句:我已经检查了我的.htaccessapache2个文件< =它们是正确的

我需要在我的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是否确实存在?

2 个答案:

答案 0 :(得分:2)

使用set_error_handler / set_exception_handler显示特定于php致命错误的页面。

答案 1 :(得分:0)

在对Fatal Errors进行一些额外的阅读后,我可以对此进行讨论:How do I catch a PHP Fatal Error

而不是使用set_error_handler&amp; set_exception_handler,用于捕获所有错误并处理后使用register_shutdown_functions

这将允许您重定向到页面(例如:500.php或其他),记录错误,&amp;如果需要,发送电子邮件。