亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 467 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號