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

问题描述:

当我使用../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 - 一切工作正常。

+1

也许是因为'mydir'在当前目录内(考虑它是相对的),其中'../'高于它......? – ircmaxell 2010-06-14 18:39:54

+1

请更新您的问题并添加您的文件夹和文件的结构。 – jigfox 2010-06-14 18:55:22

+0

您是否尝试在'../mysqlConnect.php'中添加引号? – 2010-06-14 20:20:30

这是因为您没有指定正确的包含路径。 ../涉及父目录。 ../../回去两个目录,../../../去三个回。如果mysqlConnect.php文件与脚本位于同一文件夹中,则不需要在include中指定../

请确保您指定了正确的路径。你可以很容易地检查你是否指定正确的路径,如:

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

我想要包含的文件位于根目录下一个级别的文件夹中。什么是正确的道路? – aliov 2010-06-14 18:40:41

+0

@aliov:如果它位于根的下一级,并且脚本位于根目录下,那么您应该指定该文件夹的名称而不是'../'。 – Sarfraz 2010-06-14 18:42:34

因为它没有找到你的文件。给出更具体的答案我需要看到你的文件/文件夹结构

+0

我想包含的文件位于根目录下一个级别的文件夹中。 – aliov 2010-06-14 18:42:01

+0

和哪里是想要包含此文件的文件?文件相对于根目录的位置并不重要。重要的是它相对于要包含其他文件的文件的位置。 – jigfox 2010-06-14 18:54:33

+0

需要该文件的脚本位于根目录中。我需要的文件位于根目录下一个文件夹中。根据定义, – aliov 2010-06-14 18:59:15

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

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

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

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 
+0

需要该文件的脚本位于根目录下。我需要的文件位于根目录下一个文件夹中。 – aliov 2010-06-14 18:48:06