为什么PHP的include方法对这些代码不起作用?

eqqqjvef  于 2022-11-21  发布在  PHP
关注(0)|答案(1)|浏览(194)

我不明白为什么会发生这种情况。当我尝试获取其他错误时,他们会将其包含到页面中,这样我就可以看到错误,但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,因此包含不起作用。我需要帮助。

s4chpxco

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。
问题解决^-^

相关问题