当我在浏览器中访问temp.php时,我不知道index.php中的代码是如何捕获异常的。我无法在新创建的本地站点(apache 2)上复制它,所以它可能是我现有的本地站点或apache设置,或者我可能忽略了一些简单的事情。
temp.php:
<?php
try {
throw new \Exception('temp exception message');
} catch (Exception $e) {
die('temp catch die');
error_log("[".date('Y-m-d H:i:s e')."] ".$e->getMessage(). "\n\n", 3, '/media/gcat/storage/it-all.com/Software/ProjectsSrc/Spaghettify/storage/logs/phpErrors.log');
}
die('temp end die');
的index.php:
<?php
//declare(strict_types=1);
try {
throw new \Exception('index exception message');
} catch (Exception $e) {
echo 'catch index';
error_log("[".date('Y-m-d H:i:s e')."] ".$e->getMessage(). "\n\n", 3, '/media/gcat/storage/it-all.com/Software/ProjectsSrc/Spaghettify/storage/logs/phpErrors.log');
}
die('index end die');
当我在浏览器中转到temp.php时,输出是&#34; temp catch die&#34;但错误日志显示&#34;索引异常消息&#34;。
答案 0 :(得分:0)
永远不会执行temp.php
中对error_log()
的调用。您在日志文件中看到的行是通过error_log()
中index.php
的调用生成的(当您在浏览器中加载index.php
时)。
如果你没有在浏览器中加载index.php
但是错误行仍然出现在日志文件中,那么你可能在.htaccess
中有重写规则来路由所有非请求 - index.php
的现有路径。 (大多数PHP框架使用此类规则来处理SEO友好的URL)。当您在浏览器中加载temp.php
时,浏览器也会请求/favicon.ico
; Apache无法找到它,并且由于重写规则,它会加载index.php
。