簡體   English   中英

PHP包括在所包含的路徑之前的“根正斜杠”,如:“/ folder / file.php”

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

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