包含(../x.php)在我的Linux服务器上不起作用为什么?

时间:2010-02-02 00:40:03

标签: php include

在我的Xampp中,我可以这样做:

require_once('../myFile.php');

它有效。

当我上传执行require_once的文件时,它不起作用。

以下是服务器上的错误:

Warning: require_once(../myFile.php) [function.require-once]: failed to open stream: No such file or directory in /home/xxx/public_html/yyyy/testinclude.php on line 11

Fatal error: require_once() [function.require]: Failed opening required '../myFile.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/xxx/public_html/yyyy/testinclude.php on line 11

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

它不起作用的一个可能原因是你的文件框不完全相同。

在UNIX中,文件路径区分大小写。在WIN中不是这种情况。因此,如果您要添加../myFile.php,则您的文件必须是myFile.php,而不是myfile.php


此外,include始终包含根据当前路径的文件。考虑这两个文件。

/home/xxx/public_html/first.php

<?php include('dir/second.php'); ?>

/home/xxx/public_html/dir/second.php

<?php include('third.php'); ?>

运行first.php时,第二个文件将包含/home/xxx/public_html/third.php

直接运行dir/second.php时,它会包含/home/xxx/public_html/dir/third.php

如果您的include必须始终相对于当前文件,请使用以下命令:

include(dirname(__FILE__) . '/third.php');

使用上面的代码片段,dir/second.php将始终包含/home/xxx/public_html/dir/third.php,无论当前目录如何。

答案 1 :(得分:0)

如果目录myFile.php中不存在public_html,那么它将无效。

如果您希望它与您查找同一目录,请尝试require_once('./myFile.php')

答案 2 :(得分:0)

您的myFile.php文件相对于testinclude.php文件的位置在哪里?

如果您在../中要求它,则myFile.php需要比testinclude.php高一级(即/home/xxx/public_html/}