[英]require/require_once “../” breaks loading of page without throwing error
工作目錄:
rootDir
dir1
file1.php
dir2
file2.php
main.php
main需要file1,file1需要file2。 Main可以要求file1沒有問題。 但是file1不需要file2。 我的初始嘗試要求file2(在file1中):
require_once '../dir2/file2.php';
當我訪問main.php時,我只會得到一個白頁,沒有任何內容發送到客戶端。 所以我嘗試捕獲一個異常:
try {
require_once '../dir2/file2.php';
echo "Succesfully required file";
} catch (Exception $e) {
echo $e->getMessage();
}
這也導致白屏。 沒有錯誤消息顯示,沒有寫回顯。 我發現需要file2的唯一方法:
$root = realpath($_SERVER['DOCUMENT_ROOT']);
require_once "{$root}/rootDir/dir2/file2.php";
為什么“ ../”不起作用?
編輯:
更好的解決方案是(謝謝:@Ulrich Eckhardt和@Paulpro)
require_once __DIR__ . '/../dir2/file2.php';
我個人不希望相對路徑以任何特定方式起作用。 問題是,傳統上(即在大多數OS功能中),路徑是相對於進程的當前工作目錄(CWD)解釋的,但在這里您可能希望它相對於當前文件的目錄起作用。 不要使用相對路徑,而是要明確使用__DIR__
來指定當前文件的目錄:
require_once __DIR__ . '/../dir2/file2.php';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.