[英]PHP include when a “root forward slash” precedes the included path like: “/folder/file.php”
為了加載像css或javascript圖像這樣的文件,我學會了添加一些額外的安全性並在文件夾前面添加一個額外的/
,確保這些文件是從根路徑向下開始從文件夾加載的:
例如/images/photo.jpg
例如/scripts/script.js eg
/ layout / css.css`
現在,當我在PHP中執行相同的技巧時,文件似乎無法加載,然后添加正斜杠!
<? include ("/folder/file.php"); ?> // include this file
然而,當我刪除/
在路徑的前面時,一切正常,但是Dreamweaver說它無法找到文件! 當我添加/
然后Dreamweaver時,CAN可以找到遠程資產/文件,但在運行該站點時,文件並不包括在內。
PHP的面向文件的函數(包括,require,fopen,opendir等等)通常都希望處理文件系統路徑。 也就是說,本地服務器上的路徑,而不是通過Web服務器調解。
這並不是說你不能提供一個完整的絕對URL到函數,但一般來說,如果你沒有看起來像url(protocol:// host / path?query#fragment)的東西,它會被解釋為本地文件系統中的某些東西。
因此,當您在include路徑前面/
時,它被視為絕對本地路徑,從本地文件系統的頂部開始。
沒有前導/
,它被視為相對路徑,PHP將遍歷其包含路徑,嘗試根據include_path + file_to_include
查找文件。
以/
開頭的路徑通常被解釋為絕對路徑(相對於環境)。 因此,Dreamweaver可能將根 (即/
)解釋為項目的根路徑,而unix服務器(以及在其上運行的php)將路徑解釋為目錄系統中的根。 在HTTP上,它通常是指當前域的文檔根目錄。
最好的解決方案是簡單地使用相對路徑,即以路徑開頭的路徑.
,像../../folder/file.php
。
如果你想包含一個我們認為是“本地URL路徑”的文件,那么常見的習慣用法就是:
include("$_SERVER[DOCUMENT_ROOT]/folder/file.php");
(這是完全有效的PHP3風格語法。但現在"{$_SERVER['DOCUMENT_ROOT']}"
更常見。但沒有區別。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.