我不明白为什么会发生这种情况。当我尝试获取其他错误时,他们会将其包含到页面中,这样我就可以看到错误,但404.php无法包含。
<?php
include('views/nav.php');
if (isset($_GET['id'])){
$id = preg_replace('#[\s]+#',' ',htmlspecialchars($_GET['id'], ENT_QUOTES, 'UTF-8'));
if ( is_numeric($id) ) {
try{
$query->execute();
$blogs = $query->fetchAll();
if( empty($blogs) ) {
include('error_pages/404.php'); # DOESN'T WORK
} else {
foreach ($blogs as $blog) {
include('views/article.php');
}
}
// Close connection.
$conn = null;
} catch(PDOException $e) {
include('error_pages/500.php'); # THIS ONE IS WORKS.
// echo "Connection failed: " . $e->getMessage();
}
} else {
include('error_pages/400.php'); # THIS ONE IS WORKS.
}
} else {
include('views/blog.php');
}
include('views/footer.php');
?>
我测试了这些步骤;
1.我打破了查询,所以我得到了500错误。包括工作。
1.我把一个'到动态链接,像www.domain.com/blog.php?id=',所以我得到400错误。
1.但是当我删除另一个ID时,例如“?id=2”(数据库上没有2 ID行),它没有给出404,因此包含不起作用。我需要帮助。
1条答案
按热度按时间s4chpxco1#
最后我找到了解决方法。我在web项目上创建了一个目录,它是/error_pages/,它的所有者是我,它的组是www-data(我正在NGINX上工作)。我想去检查权限。当我键入“ls -l”时,它返回了“owner:owner”值。你需要为NGINX检查这个值;
1.去你的网页项目的父。(示例domain.com)
1.在www文件夹中执行以下命令:sudo chown -R您的用户:www-data您的项目文件夹
在终端上执行以下命令。此命令会将Web项目的组设置为www-data。
问题解决^-^