我正在从事网络服务。
我试图抓住错误。我有问题的代码是:
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不会在输出上产生任何错误。但是 - 在输出上我看到这样的东西:
警告:从空值中创建默认对象 /srv/webservice/server.php 在 119
行
我想避免输出任何HTML,因为这是web服务,我在客户端有JSON解释器。
我的问题是:
当我无法访问PHP输出时,如何调试这样的服务?我想将所有错误,警告等重定向到文件。
答案 0 :(得分:3)
警告不是例外.....你可以捕获异常,但不能捕获警告/通知/错误/等。如果您想要捕获警告,则需要使用set_error_handler()
将它们转换为具有用户定义错误处理程序的异常#!/bin/bash
URL=http:://www.myurl.com
echo $(date) 'Running wget...'
wget -O - -q "$URL/something/something2"
答案 1 :(得分:1)
您收到PHP警告,而不是异常。也许这有助于直接保存您的错误:
ini_set("log_errors", true);
ini_set("error_log", "log/error.txt");
这会将所有PHP错误和警告(以及通知)记录到此文件中。
在代码块之后,如果您愿意,可以禁用它:
ini_set("log_errors", false);