在我的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
有什么想法吗?
答案 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/
}