为了账号安全,请及时绑定邮箱和手机立即绑定

PHP包含相对路径

PHP包含相对路径

PHP
呼啦一阵风 2019-10-10 14:15:40
我有/root/update/test.php文件。还有一个文件/root/connect.php; 该文件有一行include "../config.php";在/root/update/test.php中。有代码set_include_path(".:/root");include "connect.php";当我运行/root/update/test.php时,它找到connect.php,但是找不到config.php,这给了我PHP Warning:  include(../config.php): failed to open stream: No such file or directory in /root/connect.php on line 2PHP Warning:  include(): Failed opening '../config.php' for inclusion (include_path='.:/root')这让我感到困惑,因为这些警告使我似乎似乎在正确地进行所有操作-包含路径为/ root,并且它正在寻找存在的文件../config.php(/config.php)。有人可以帮我清理一下吗?请注意,由于要部署到我无权访问的生产服务器,因此对我来说,使用绝对路径不是一个选择。
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

您可以始终使用__DIR__以下命令将其包括在内:


include(dirname(__DIR__).'/config.php');

__DIR__是一个“ 魔法常数 ”,并返回当前文件的目录,且不带斜杠。它实际上是绝对路径,您只需要将文件名连接到即可__DIR__。在这种情况下,由于我们需要提升目录,因此我们使用PHP来提升dirname文件树,从这里我们可以访问config.php。


您也可以在此方法中设置根路径:


define('ROOT_PATH', dirname(__DIR__) . '/');

在test.php中,将您的根目录设置为该/root/级别。


include(ROOT_PATH.'config.php');

然后应该可以在需要的位置包含配置文件。


查看完整回答
反对 回复 2019-10-10
?
Qyouu

TA贡献1786条经验 获得超11个赞

虽然我很欣赏你相信绝对路径是不是一种选择,它是不是相对路径更好的选择和更新的PHP包含路径。


将绝对路径与可以根据环境设置的常数一起使用。


if (is_production()) {

    define('ROOT_PATH', '/some/production/path');

}

else {

    define('ROOT_PATH', '/root');

}


include ROOT_PATH . '/connect.php';

如前所述,ROOT_PATH也可以从当前路径$_SERVER['DOCUMENT_ROOT']等导出。


查看完整回答
反对 回复 2019-10-10
?
呼如林

TA贡献1798条经验 获得超3个赞

function relativepath($to){

    $a=explode("/",$_SERVER["PHP_SELF"] );

    $index= array_search("$to",$a);

    $str=""; 

    for ($i = 0; $i < count($a)-$index-2; $i++) {

        $str.= "../";

    }

    return $str;

    }

这是我为此做出的最佳解决方案,您只需要指定要停止的级别即可,但是问题是您必须使用此文件夹名称一次。


查看完整回答
反对 回复 2019-10-10
  • 3 回答
  • 0 关注
  • 440 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信