我上课并且这样做:
function __destruct() {
$this->load_file('epicEndingfile.php');
}
我收到一个错误:
Warning: require(...) [function.require]: failed to open stream: No such file or directory
当我对__construct
执行同样的操作时。那是为什么?
编辑:我实际上不需要文件,但我使用方法来执行此操作。
答案 0 :(得分:1)
要求使用您的CD(当前目录),而不是您放置文件的目录。
它可能正在改变您的应用程序上下文(构造和销毁之间), 如果要根据当前文件提供相对文件路径,请使用:
require dirname(__FILE__)."/epicEndingfile.php";
在PHP 5.2及以下版本和
require __DIR__."/epicEndingfile.php";
在PHP 5.3 +
上答案 1 :(得分:0)
您需要计算文件的位置。编写文件的方式,文件必须与调用函数的文件存在于同一目录中。添加完整路径,它应该可以工作。
require '/full/path/to/file/epicEndingfile.php';
答案 2 :(得分:0)
在__destruct方法中,首先执行echo getcwd();
,您将在该阶段看到当前工作目录,确定此时已更改。
例如,如果您的类是在位于与主脚本不同的目录中的文件中定义的,则require将相对于类定义文件。
一个好主意总是定义一个包含脚本基本目录的常量。 所以在主php文件的第一行中,添加一个。
define('rootdir', dirname(__FILE__));
// you can replace dirname(__FILE__) with __DIR__ if it works in you PHP Version.
然后每次执行包含或要求相对于主脚本文件的文件时。
include rootdir. '/requires/include.php';
例如。