簡體   English   中英

require / require_once“ ../”中斷頁面加載而不會引發錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM