【问题标题】:PHP file does exist but can't require_once()PHP 文件确实存在但不能 require_once()
【发布时间】:2014-06-20 03:42:54
【问题描述】:

所以最近我决定将位于每个页面顶部的 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 中

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

使用这个作为文件路径:

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

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

【问题讨论】:

  • 尝试将/ backend.php放在$_SERVER['DOCUMENT_ROOT']之后
  • 如果找不到文件,它会自动失败,所以不需要或死。
  • 把 /backend.php 工作了谢谢卢卡斯。然后我取出了骰子。

标签: php file require require-once


【解决方案1】:

问题在于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';

如果无论如何都找不到文件,它将引发错误并停止脚本。正如 cmets 中提到的,重要的是要意识到文档根目录没有尾部斜杠。因此,您必须自己添加:

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

【讨论】:

  • 完美解释! ;)
  • 我从文件中复制时输入错误,实际行是:“require('Backend.php') or die('Could not load Backend.');”不过还是谢谢
  • @MrRevolutionz 我的回答并没有断言你打错了,因为你没有;还有什么不清楚的吗?
【解决方案2】:

在需要之前添加:

echo getcwd();

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

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 2013-08-27
    • 2017-10-19
    • 2016-03-08
    • 2015-12-19
    • 2015-02-27
    • 2016-01-13
    • 1970-01-01
    • 2011-01-09
    相关资源
    最近更新 更多