尝试捕获不在PHP中工作?

尝试捕获不在PHP中工作?,php,debugging,warnings,Php,Debugging,Warnings,我正在研究web服务 我试图抓住错误。我的问题代码是: try { $query = "UPDATE Users SET Latitude=?, Longitude=?, Address=?, LocationTimestamp=? WHERE Id=?"; $stmt

我正在研究web服务

我试图抓住错误。我的问题代码是:

    try
    {
    $query = "UPDATE Users
              SET 
                Latitude=?,
                Longitude=?,
                Address=?,
                LocationTimestamp=?
              WHERE Id=?";

        $stmt = $this->link->prepare($query);
        $stmt->bind_param('ddssi', $Latitude, $Longitude, $Address, $LocationTimestamp, $Id);
        $stmt->execute();


        $affected_rows = $stmt->affected_rows;

    }

    catch(Exception $exc)
    {
        file_put_contents("log/error.txt",$exc->getMessage());
    }
我预计,catch块将捕获所有错误,PHP不会在输出上产生任何错误。然而,在输出上,我看到如下情况:

警告:从中的空值创建默认对象 /第119行的srv/webservice/server.php

我希望避免在输出中使用任何HTML,因为这是web服务,并且我在客户端有JSON解释器

我的问题是:


当我无法访问PHP输出时,如何调试这样的服务?我想将所有错误、警告等重定向到文件。

警告不是例外。。。。。您可以捕获异常,但不能捕获警告/通知/错误等。如果要使警告可捕获,则需要使用用户定义的错误处理程序将其转换为异常


警告不是例外。。。。。您可以捕获异常,但不能捕获警告/通知/错误等。如果要使警告可捕获,则需要使用用户定义的错误处理程序将其转换为异常


您会得到一个PHP警告,而不是异常。也许这有助于直接保存错误:

ini_set("log_errors", true);
ini_set("error_log", "log/error.txt");
这会将所有PHP错误和警告(以及注意事项)记录到此文件中

在代码块之后,如果需要,可以禁用它:

ini_set("log_errors", false);

您会得到一个PHP警告,而不是异常。也许这有助于直接保存错误:

ini_set("log_errors", true);
ini_set("error_log", "log/error.txt");
这会将所有PHP错误和警告(以及注意事项)记录到此文件中

在代码块之后,如果需要,可以禁用它:

ini_set("log_errors", false);

也许还值得一提的是,您可以打开输出缓冲,然后使用
error\u get\u last()
在发生错误时获取最后一个错误。要将警告转换为异常,这可能是相关的:可能还值得一提的是,您可以打开输出缓冲,然后使用
error\u get\u last()
获取发生错误时的最后一个错误。要将警告转换为异常,这可能与以下内容有关: