2010-08-02 96 views
2

我刚刚得到一个奇怪的问题。我包括一些文件从我的index.php,现在我得到这个错误:PHP“没有这样的文件或目录” - 但它应该在那里

require(cfg/cfg.database.inc.php) [function.require]: failed to open stream: No such file or directory in C:\...\index.php on line XX 

奇怪的是,它的工作只是一分钟前。我再次检查了该文件名的拼写。

我所做的:我使用记事本+ +,我看到了我这样的代码:

require("cfg/cfg.database.inc.php"); 

我想删除")之间的空间,让我感动光标出现,并推动德尔,但它删除了.php的最后一个p

我删除了整行并重写了它,现在我收到文件无法找到的错误。我也重新命名了不起作用的文件。子目录cfg中的所有文件都会出现此错误,但不包括其他子目录中的文件。

任何人都知道我在做什么错,或者我能做些什么来发现问题? 谢谢。

/编辑:我的文件结构

index.php 
cfg/cfg.database.inc.php 
cfg/cfg.other.inc.php 
core/class.user.inc.php 
core/... 

所有core工作,没有那些从cfg包括

+1

什么的var_dump(水珠( 'CFG/*'));返回? – 2010-08-02 22:29:41

+1

如果您有奇怪的角色行为,您是否尝试在十六进制编辑器中检查文档?(可能将其添加到记事本++与http://sourceforge.net/projects/npp-plugins/files/) – Wrikken 2010-08-02 22:31:53

+0

@Alan Storm:array(2){[0] => string(27)“cfg/cfg.database。 inc.php“[1] => string(24)”cfg/cfg.datetime.inc.php“} – opatut 2010-08-02 22:38:32

回答

1

有usualy两个原因这种行为

  1. 你的PHP文件和/或文件名具有的渲染到屏幕为标准,ASCII字母字符,但其实是在另一种编码一些其他的字母

  2. 您有多个CFG文件夹,而PHP正在寻找错误的一个。

试试看看哪个cfg文件夹(相对于您的运行脚本)PHP看到的,以及它在那里看到的文件。

$my_cfg_files = glob('./*'); 

接下来,尝试通过迭代循环

header('Content-Type: text/plain'); 
foreach($my_cfg_files as $file) 
{ 
    echo 'trying ' . $file . "\n"; 
    require_once($file); 
} 
exit("\n Done \n"); 

看看它输出的文件列表需要的文件。复制脚本打印的内容并将其包含在您的require语句中。

+0

似乎是数字2.我重命名了我的文件名,但这次我没有保留“.php”,就像Windows Explorer建议的一样。似乎有一些看不见的角色... – opatut 2010-08-02 23:20:04

1

All files in the subdir cfg get this error, but not those in other subdirs.

尝试:

require("cfg.database.inc.php"); 
+0

不起作用,对不起。你能解释为什么你认为它应该吗? – opatut 2010-08-02 22:24:22

+0

因为如果您已经在cfg中,那么cfg/cfg.database.inc.php将是cfg/cfg/cfg.database.inc.php 您还可以尝试require(“/ cfg/cfg.database.inc .PHP“); ? – babonk 2010-08-02 22:26:07

+0

不,我在/,并没有你的建议工程。我认为有一些看不见的角色或者像这样愚蠢的东西... – opatut 2010-08-02 22:32:00

0

有可能是一个空间:

require("cfg.database.inc.php "); 

删除它:

require("cfg.database.inc.php"); 
相关问题