require_once 致命错误(再一次)

Posted

技术标签:

【中文标题】require_once 致命错误(再一次)【英文标题】:require_once fatal error (one more time) 【发布时间】:2012-07-08 22:53:21 【问题描述】:

当一切正常时,我已经像以前一样创建了超级简单的脚本。但不知何故,它停止了,现在每次我尝试要求一个文件时,它都会向我显示一个错误:

致命错误:require_once():在 E:\tools 中打开所需的 'E:\tools\Easyphp\www/registry/registry.class.php' (include_path='.;C:\php\pear') 失败\EasyPHP\www\index.php 第 18 行

我的索引文件:

define("APP_PATH", dirname(__FILE__)."/");
require_once(APP_PATH.'registry/registry.class.php');

就是这样,但我仍然无法加载该页面。

我应该如何设置它?我只使用 Windows 进行本地构建。

【问题讨论】:

file_exists(APP_PATH.'registry/registry.class.php') 给出?如果为假,则检查 APP_PATH.'registry/registry.class.php' 与预期的文件路径 可能是愚蠢的问题,但E:\tools\EasyPHP\www/registry/registry.class.php 存在吗? 是的,但告诉我它甚至不存在。 好的,我已经解决了这个问题。 Dreamweaver 将文件命名为“registry.class.php.php”,这可能是我的错,我没有注意到这一点。当我重新创建文件时,它开始正常工作。无论如何使用 directory_separator 比单斜杠更好。 【参考方案1】:
define( "APP_PATH", dirname( __FILE__ ) . DIRECTORY_SEPARATOR );
require_once( APP_PATH . 'registry' . DIRECTORY_SEPARATOR . 'registry.class.php' );

常量DIRECTORY_SEPARATOR 在 Windows 系统上计算为反斜杠,在 *nix 系统上计算为正斜杠。这样,您的代码无需修改即可在 Windows 和 Linux 环境中运行。

(See the PHP manual on this constant 和它的朋友PATH_SEPARATOR。)

如果您仍然遇到问题,则该文件可能在该路径中不存在,或者 PHP 没有对该文件的读取权限。

【讨论】:

打开失败需要 'E:\tools\EasyPHP\www\registry\registry.class.php' (include_path='.;C:\php\pear') 虽然文件实际存在并且它有所有保存/读取/写入权限。【参考方案2】:

您在dirname() 的结果中看到该字符串有\,而在您的其他字符串中您有/,我认为您应该只有\

【讨论】:

我什么也没做,我只设置 / 分隔符,反斜杠已被系统添加到文件中。甚至没有办法改变它 在 windows 中,当用 php 编写时,您在 php 中的文件路径中使用 \。所以你应该写:define("APP_PATH", dirname(__FILE__)."\"); require_once(APP_PATH.'registry\registry.class.php');

以上是关于require_once 致命错误(再一次)的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:require_once():

致命错误:require_once() 使用绝对路径

require_once() 中的 PHP 致命错误可以 n

致命错误:require_once() [function.require]

require_once 给出警告和致命错误

调用 require_once() 的警告和致命错误