在PHP中删除调试消息

时间:2013-12-22 18:34:15

标签: php mysql mysqldump

我在PHP中有几个mysql查询,在每次查询结束时我都这样做了

mysql_query(STRING) or die(mysql_error());

就DEV环境而言,这很好,但我不希望生产用户看到这些错误。通过设置ON OFF.

删除此消息的任何好主意

6 个答案:

答案 0 :(得分:1)

除了你不应该使用mysql_之外,你可以简单地做另一个功能:

define('DEV', true);

function mysql_query_custom() {
    $result = call_user_func_array('mysql_query', func_get_args());

    if ($result === false) {
        if (DEV) {
            die(mysql_error());
        }
    }

    return $result;
}

mysql_query_custom(STRING);

答案 1 :(得分:1)

有很多方法可以做到。最简洁,最像你现在正在做的事情:

// do this once
$PRODUCTION = true;

// now use
mysql_query() or ($PRODUCTION ?: die(mysql_error()));

我提醒说,虽然从长远来看这不是一种可维护的调试方法。在这个帖子中有很多好的选择。

无论您做什么,都会在您的代码中开发全面的错误检测,日志记录和响应机制。如果您正在使用框架,请利用其设施。

答案 2 :(得分:0)

然后设置一个名为$DEBUG的配置变量,并将逻辑包装在条件if / else中?

$DEBUG = true;

if ($DEBUG) {
  mysql_query(STRING) or die(mysql_error());
}
else {
  mysql_query(STRING);
}

答案 3 :(得分:0)

const DEBUG = true;

function fail($message) { die (DEBUG ? $message : ''); }

...

use_mysql_query_even_though_it_sucks() or fail(mysql_error());
// seriously.  Use mysqli.

答案 4 :(得分:0)

您可以更轻松地将所有die(替换为error_handle(或其他内容,并包含此功能:

function error_handle($err) {
    die($err); // Comment this line out if you don't want the error to be displayed.
}

这也很棒,因为您可以在生产中扩展代码以记录错误等。如果您使用Git或其他版本控制系统,您还可以在全局代码中的某处定义$debug - 变量。

修改:我建议您更换所有die(而不仅仅是die,以避免替换您不想要的地方,如果您在句子中使用死亡或其他内容

答案 5 :(得分:0)

更好的是,使用这样的东西:

if($_SERVER['SERVER_NAME'] != "dev.mydomain.com"){
    ini_set("display_errors",0);
    ini_set("log_errors", 1);
}

它可以帮助您记住在将错误上传到生产服务器时禁用错误。