在 PHP on webhosting PDO 中获取更多信息日志输出
getting more informative log output in PHP on webhosting PDO
我一直在开发复杂的平台,在其上构建后者。我已经达到了它在我的 lamp 上工作的地步,但在通过网络托管时却没有。我的一个函数旨在在操作期间将变量记录到数据库中,只发送一小部分
Fatal error: in /home/.../asi/kluckaSpolocne.php on line 51
这里指向execute语句的异常:
throw new \PDOException($e->getMessage(), (int)$e->getCode());
有问题的代码:
//echo "\n Spolocne ";
//require 'ochrana.php';
// include 'databazaCitaj.php';
$dbuzyvatel = "mine login";
$dbheslo = "mine password";
//$charset = 'utf8mb4';
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$databaza = new PDO("mysql:host=localhost;dbname=mine_database", $dbuzyvatel, $dbheslo);
$databaza->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
# $preloz = $databaza->prepare('select ? from preklady where jazyk=?');
$GLOBALS['nová']=false;
$DlzkaVystupu=1;
$IC=0;
$Hesla=json_encode(array(1,1));
$HlavnýÚčel=0;
$Kolá=array(0);
$Hlasenia['Premenna']=' ';
$Hlasenia['Text']=' ';
$Hlasenia['Cislo']=1;
$Hlasenia['JS']='[0]';
$Hlasenia['Kdo']=0;
$Hlasenia['Vlastnosti']='[0]';
//print_r($Hlasenia);
/*$hlásenie=$databaza->prepare('insert into Hlásenia (Premenná, Text)
values (:Premenna, :Text)');//*/
$hlásenie=$databaza->prepare('insert into Hlásenia (Premenná, Text, Cislo, JS, Kdo, Vlastnosti)
values (:Premenna, :Text, :Cislo, :JS, :Kdo, :Vlastnosti)');//*/
$hlásenie->bindParam(':Premenna', $Hlasenia['Premenna']);
$hlásenie->bindParam(':Text', $Hlasenia['Text']);
$hlásenie->bindParam(':Cislo', $Hlasenia['Cislo']);
$hlásenie->bindParam(':JS', $Hlasenia['JS']);
$hlásenie->bindParam(':Kdo', $Hlasenia['Kdo']);
$hlásenie->bindParam(':Vlastnosti', $Hlasenia['Vlastnosti']);//*/
// print_r($hlásenie);
try { $hlásenie->execute();
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}//*/
知道如何获取有关问题的有用信息吗?
看起来是您的 "function designed to log the variables" 弄乱了错误消息。
这样做:
set_exception_handler(function ($e)
{
error_log($e);
http_response_code(500);
if (ini_get('display_errors')) {
echo $e;
} else {
echo "<h1>500 Internal Server Error</h1>
An internal server error has been occurred.<br>
Please try again later.";
}
});
它会捕获每个异常并将其记录到网络服务器的错误日志中。
这是我写的 complete error handling solution 的一部分。
我一直在开发复杂的平台,在其上构建后者。我已经达到了它在我的 lamp 上工作的地步,但在通过网络托管时却没有。我的一个函数旨在在操作期间将变量记录到数据库中,只发送一小部分
Fatal error: in /home/.../asi/kluckaSpolocne.php on line 51
这里指向execute语句的异常:
throw new \PDOException($e->getMessage(), (int)$e->getCode());
有问题的代码:
//echo "\n Spolocne ";
//require 'ochrana.php';
// include 'databazaCitaj.php';
$dbuzyvatel = "mine login";
$dbheslo = "mine password";
//$charset = 'utf8mb4';
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$databaza = new PDO("mysql:host=localhost;dbname=mine_database", $dbuzyvatel, $dbheslo);
$databaza->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
# $preloz = $databaza->prepare('select ? from preklady where jazyk=?');
$GLOBALS['nová']=false;
$DlzkaVystupu=1;
$IC=0;
$Hesla=json_encode(array(1,1));
$HlavnýÚčel=0;
$Kolá=array(0);
$Hlasenia['Premenna']=' ';
$Hlasenia['Text']=' ';
$Hlasenia['Cislo']=1;
$Hlasenia['JS']='[0]';
$Hlasenia['Kdo']=0;
$Hlasenia['Vlastnosti']='[0]';
//print_r($Hlasenia);
/*$hlásenie=$databaza->prepare('insert into Hlásenia (Premenná, Text)
values (:Premenna, :Text)');//*/
$hlásenie=$databaza->prepare('insert into Hlásenia (Premenná, Text, Cislo, JS, Kdo, Vlastnosti)
values (:Premenna, :Text, :Cislo, :JS, :Kdo, :Vlastnosti)');//*/
$hlásenie->bindParam(':Premenna', $Hlasenia['Premenna']);
$hlásenie->bindParam(':Text', $Hlasenia['Text']);
$hlásenie->bindParam(':Cislo', $Hlasenia['Cislo']);
$hlásenie->bindParam(':JS', $Hlasenia['JS']);
$hlásenie->bindParam(':Kdo', $Hlasenia['Kdo']);
$hlásenie->bindParam(':Vlastnosti', $Hlasenia['Vlastnosti']);//*/
// print_r($hlásenie);
try { $hlásenie->execute();
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}//*/
知道如何获取有关问题的有用信息吗?
看起来是您的 "function designed to log the variables" 弄乱了错误消息。
这样做:
set_exception_handler(function ($e)
{
error_log($e);
http_response_code(500);
if (ini_get('display_errors')) {
echo $e;
} else {
echo "<h1>500 Internal Server Error</h1>
An internal server error has been occurred.<br>
Please try again later.";
}
});
它会捕获每个异常并将其记录到网络服务器的错误日志中。 这是我写的 complete error handling solution 的一部分。