警告:include_once(../lib/Database.php):打开流失败:没有这样的文件或目录

Posted

技术标签:

【中文标题】警告:include_once(../lib/Database.php):打开流失败:没有这样的文件或目录【英文标题】:Warning: include_once(../lib/Database.php): failed to open stream: No such file or directory 【发布时间】:2018-03-01 23:18:16 【问题描述】:

警告:include_once(../lib/Database.php):打开流失败:否 这样的文件或目录在 C:\xampp\htdocs\project\e-commerce\classes\Adminlogin.php 在第 4 行

警告:include_once():无法打开“../lib/Database.php” 包含(include_path='C:\xampp\php\PEAR') C:\xampp\htdocs\project\e-commerce\classes\Adminlogin.php 在第 4 行

致命错误:找不到类“数据库” C:\xampp\htdocs\project\e-commerce\classes\Adminlogin.php 在第 17 行

我该如何解决这个问题?我的代码在这里...

<?php
    include '../lib/Session.php';
    Session::checkLogin();
    include_once '../lib/Database.php';
    include_once '../helpers/Format.php';
?>
<?php
    /**
    * Adminlogin Class
    */
    class Adminlogin 
        private $db; 
        private $fm; 

        public function __construct()
            $this->db = new Database();
            $this->fm = new Format();
        

        public function adminLogin($adminUser,$adminPass)
            $adminUser = $this->fm->validation($adminUser);
            $adminPass = $this->fm->validation($adminPass);

            $adminUser = mysqli_real_escape_string($this->db->link, $adminUser);
            $adminPass = mysqli_real_escape_string($this->db->link, $adminPass);

            if (empty($adminUser) || empty($adminPass)) 
                $loginmsg = "Username and Password must not be empty..!!";
                return $loginmsg;
             else 
                $query = "SELECT * FROM tbl_admin WHERE adminUser = '$adminUser' AND adminPass = '$adminPass'";
                $result = $this->db->select($query); 
                if ($result != false) 
                    $value = $result->fetch_assoc();

                    Session::set("adminlogin", true);
                    Session::set("adminId", $value['adminId']);
                    Session::set("adminName", $value['adminName']);
                    Session::set("adminUser", $value['adminUser']);
                    header("Location:dashbord.php");
                 else
                    $loginmsg = "Username and Password not match !!";
                    return $loginmsg;
                
            
        
    
?>

【问题讨论】:

那么,您对“找不到文件”有何看法?除非问题中有解释,否则其他人如何知道您的目录结构的关系? (顺便说一句,相对路径通常是相对于 invocation 脚本的,不相互包含。) 【参考方案1】:

试试这个方法:

<?php 
    define('__ROOT__', dirname(dirname(__FILE__))); 
    require_once(__ROOT__.'../../lib/session.php');
?>

【讨论】:

【参考方案2】:

问题是 php 试图在你的 include_path 中找到你的类,它被设置为 C:\xampp\php\PEAR

您可以尝试使用这种方法:

include_once $_SERVER['DOCUMENT_ROOT'] . "/lib/Session.php";
include_once $_SERVER['DOCUMENT_ROOT'] . "/lib/Database.php";
include_once $_SERVER['DOCUMENT_ROOT'] . "/helpers/Format.php";

但我发现定义全局常量并稍后在代码中使用它会更好:

define('HOME_DIR', 'C:\xampp\htdocs\project\e-commerce\');

include_once HOME_DIR . "/lib/Session.php";
include_once HOME_DIR . "/lib/Database.php";
include_once HOME_DIR . "/helpers/Format.php";

当您迁移到生产环境时,您必须将 HOME_DIR 重新定义为您服务器上的任何内容。

【讨论】:

它不工作...现在这个问题是警告:include_once(C:/xampp/htdocs/lib/Session.php): failed to open stream: No such file or directory in C:\ xampp\htdocs\project\e-commerce\classes\Adminlogin.php 在第 2 行警告:include_once(): 未能打开 'C:/xampp/htdocs/lib/Session.php' 以包含(include_path='C:\xampp \php\PEAR') 在 C:\xampp\htdocs\project\e-commerce\classes\Adminlogin.php 第 2 行致命错误:在 C:\xampp\htdocs\project\e-commerce 中找不到类“会话” \classes\Adminlogin.php 在第 3 行 @Afnan 请尝试使用 define() 的第二个代码块。如果这不适合您,请更改此项目的 DOCUMENT_ROOT,使其指向您的根项目目录 (C:\xampp\htdocs\project\e-commerce)。你可以参考这个问题:***.com/questions/10157333/…【参考方案3】:

您的文件夹和文件的结构是什么? 这个

include_once '../lib/Database.php';

意味着,您的文件夹和文件必须是 电子商务\类\Adminlogin.php 电子商务\libs\Database.php

【讨论】:

以上是关于警告:include_once(../lib/Database.php):打开流失败:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

「PHP」include()include_once()require()require_once()的用法及区别

文件包含漏洞

指纹 PHP 文件

求大神解释一下PHP中include()require()import()还有shine()分别啥作用吗

文件包含漏洞

php include_once 路径