在網路伺服器文件目錄中包含活動內容(例如腳本和可執行檔)有時被認為是不安全的做法。如果由於某些設定錯誤,腳本未被執行而是顯示為常規 HTML 文件,則可能導致智慧財產權或安全資訊(例如密碼)洩漏。因此,許多系統管理員更喜歡為只能透過 PHP CGI 存取的腳本設定另一個目錄結構,因此始終會被解釋而不是直接顯示。
此外,如果前一節中描述的確保請求不被重定向的方法不可用,則必須設置一個與 Web 文件根目錄不同的腳本 doc_root。
您可以透過 設定檔 中的 doc_root 設定指令來設定 PHP 腳本文件根目錄,或者您可以設定環境變數 PHP_DOCUMENT_ROOT。如果設定了它,PHP 的 CGI 版本將始終使用此 doc_root
和請求中的路徑資訊來構造要打開的文件名,因此您可以確保在此目錄之外沒有執行任何腳本(除了下面的 user_dir
之外)。
這裡可以使用的另一個選項是 user_dir。當 user_dir
未設定時,唯一控制打開的文件名的是 doc_root
。打開像 http://my.host/~user/doc.php 這樣的網址並不會導致打開使用者家目錄下的文件,而是打開 doc_root
下名為 ~user/doc.php 的文件(是的,一個以波浪號 [~
] 開頭的目錄名稱)。
如果 user_dir
設定為例如 public_php,則像 http://my.host/~user/doc.php 這樣的請求將會打開使用者家目錄下名為 public_php 的目錄中的 doc.php 文件。如果使用者的家目錄是 /home/user,則執行的文件是 /home/user/public_php/doc.php。
user_dir
的展開與 doc_root
設定無關,因此您可以單獨控制文件根目錄和使用者目錄的存取。