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() 中的 PHP 致命错误可以 n