PHP需要realpath - 需要打开失败

时间:2013-03-25 14:32:32

标签: php path include require

我试图通过相对路径require / include一个文件。存在路径并检查所有权限。要包含的脚本是可读的,可以通过浏览器中的URL访问...

但是,我收到错误/警告,表示无法打开。调用脚本和要包含的文件都在同一台服务器上。

来电亲戚:

/devel/phi/dev/appcenter-head/appcenter/application/nm/index.php

来电者位置:

/home/devel/wwwroot/phi/dev/appcenter-head/appcenter/application/nm

要求亲戚:

/devel/nm/dev/http-api/http-api/src/httpapi.inc.php

需要位置:

/home/devel/wwwroot/nm/dev/http-api/http-api/src

我尝试了什么:

$strHttpApiUrl = "/devel/nm/dev/http-api/http-api/index.php";
$strFile = "/src/httpapi.inc.php";
$strDirName = dirname( $strHttpApiUrl );
$strRealpath = realpath( $strDirName . $strFile );
require_once $strRealpath;

失败:PHP Warning: require_once(/home/devel/wwwroot/phi/dev/appcenter-head/appcenter/application/nm) [<a href='function.require-once'>functio n.require-once</a>]: failed to open stream: No such file or directory in /home/devel/wwwroot/phi/dev/appcenter-head/appcenter/application/nm/class/TWinLogin.php

也失败了:PHP Fatal error: require_once() [<a href='function.require'>function.require</a>]: Failed opening required '' (include_path='.:/opt/nm/appcenter40-server-php53/lib/php')

还试过包括字符串URL或使用绝对路径...

如何包含该文件?


修改

这成功地包含了文件:

require_once '/home/devel/wwwroot/nm/dev/http-api/http-api/src/httpapi.inc.php';

那么我怎么能得到那条工作路径,假设我得到以下相对路径:

/devel/nm/dev/http-api/http-api/index.php

1 个答案:

答案 0 :(得分:2)

realpath尝试在文件系统中获取真实路径 - 绝对路径。所以它最有可能从斜线开始。

如果你的结果路径以斜杠开头并且php试图要求/包含它,那么很可能会认为它是'绝对的。如果它没有看到现有文件 - 它会给你这些错误。

如果你想使用相对路径,请避免使用realpath。