PHP文件确实存在但不能require_once()

时间:2014-05-03 13:57:24

标签: php file require require-once

所以最近我决定移动位于每个页面顶部的php代码,并且与它自己的php文件完全相同。我在尝试require_once()之前做的第一件事是确保php可以读取文件,所以我做了

<?php
    if(file_exists('Backend.php')) {
        echo 'File does exist';
    }
?>

它回应说文件存在完全正常。现在每当我尝试:

<?php
    require('Backend.php') or die('Could not load Backend.');
?>

我收到错误:

 'Warning: require(1): failed to open stream: No such file or directory in
  C:\Users\Owner\Dropbox\PotateOS\index.php on line 2

  Fatal error: require(): Failed opening required '1'(include_path='.;C:\xampp\php\PEAR;C:\Users\Owner\Dropbox\PotateOS') in C:\Users\Owner\Dropbox\PotateOS\index.php on line 2

注意我正在使用(XAMPP)。我尝试过的事情:

将文件的路径添加到php.ini的include_path

检查文件名以确保它没有任何奇怪的charectars

使用此作为文件路径:

<?php
    require($_SERVER['DOCUMENT_ROOT'] . 'Backend.php') or die('Could not load');
?>

(请注意,我尝试访问后端的页面和后端都位于根目录中)

2 个答案:

答案 0 :(得分:9)

问题是require不是一个函数,而是一个语言结构;因此,它将运行您的代码:

require('Backend.php' or die('Could not load Backend.'));

表达式'Backend.php' or die('Could not load Backend.')会产生bool(true)并转换为字符串,它将变为string(1) "1",并且会尝试加载。

您可以简单地将代码缩减为:

require 'Backend.php';

如果无法找到该文件,它将引发错误并将暂停该脚本。正如评论中所提到的,认识到文档根目录没有斜杠是很重要的。因此,你必须自己添加:

require $_SERVER['DOCUMENT_ROOT'] . '/Backend.php';

答案 1 :(得分:0)

在需要之前添加:

echo getcwd();

然后检查Backend.php是否与此函数的结果在同一目录中