我试图通过相对路径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
答案 0 :(得分:2)
realpath尝试在文件系统中获取真实路径 - 绝对路径。所以它最有可能从斜线开始。
如果你的结果路径以斜杠开头并且php试图要求/包含它,那么很可能会认为它是'绝对的。如果它没有看到现有文件 - 它会给你这些错误。
如果你想使用相对路径,请避免使用realpath。