当我使用../时,为什么会出现警告和致命错误?

时间:2010-06-14 18:36:09

标签: php

当我使用../mysqlConnect.php时,我收到以下消息。

Warning: require_once(../mysqlConnect.php) [function.require-once]:
failed to open stream: No such file or directory in /home/content/etc...  

Fatal error: require_once() [function.require]: Failed opening required 
'../mysqlConnect.php' (include_path='.:/usr/local/php5/lib/php') in /home/content/etc...    

当我使用目录名称 - mydir/mysqlConnect.php时 - 一切正常。

4 个答案:

答案 0 :(得分:2)

require_once('../mysqlConnect.php')要求PHP查看目录中目录目录中mysqlConnect.php的目录。

由于您的连接文件似乎位于mydir目录中,require_once('mydir/mysqlConnect.php')可以正常工作,因为它会查找该目录,该目录包含在当前目录中。

视觉表示(假设script.php是包含该文件的脚本):

dir/
  subdir/              # PHP looks here for ../mysqlConnect.php
    script.php
    mydir/             # PHP looks here for mydir/mysqlConnect.php
      mysqlConnect.php

答案 1 :(得分:1)

Require是相对于invoced脚本,而不是你调用require()in的脚本。使用类似这样的东西来获得绝对路径:

 require(dirname(__FILE__) . '/../mysqlConnect.php');

在PHP 5中,您还可以使用 DIR

答案 2 :(得分:0)

因为它找不到你的文件。给出一个更具体的答案,我需要看到你的文件 - /文件夹结构

答案 3 :(得分:-1)

那是因为你没有指定正确的包含路径。 ../指父目录。 ../../返回两个目录,../../../返回其中三个目录。如果mysqlConnect.php文件与脚本位于同一文件夹中,则无需在包含中指定../

确保指定正确的路径。您可以轻松检查是否指定了正确的路径,如:

if (file_exists('../mysqlConnect.php'))
{
  echo 'Iam specifying the correct path !!';
}
else
{
  echo 'Well, I am not :(';
}