[英]php includes in html files-directories
所有php包含文件都必須在include目錄中,還是只是組織上的便利? 我可以使用該目錄的路徑從任何目錄中包含文件嗎? 包含php的html文件是否必須有php擴展名? 如果是這樣,我想這意味着如果他們都有我計划“包含”的菜單,我所有的html文檔都將是php。 是否可接受的協議使您網站上的每個文件都是一個php文件?
謙卑敬畏的弓......
ps這個主題有一個很好的聖經!?
你不需要將你的php包含在任何特定的地方,或者有任何文件擴展名......
調用include('/ path / to / your / file / with / any / extension.extension'); 應該包含它作為一個PHP文件
使用php擴展程序通過php代碼調用文件通常更安全。
如果你將PHP放在.html文件中並包含()它,它應該可以工作。 但是,如果有人直接從服務器請求.html文件,他們可以看到所有未處理的PHP代碼,這是危險的。 因此,如果您正在執行此操作,則將這些文件放在非Web可訪問的目錄中(例如,在文檔根目錄上方)或更改Web服務器配置,以便將.html文件視為PHP。
您應該能夠包含()任何文件,但如果PHP中存在open_basedir限制,您可能會在訪問某些目錄時遇到問題(您可能會在大多數虛擬主機上找到)
您可以從服務器上的任何位置包含文件(當然,取決於文件訪問權限和安全限制)。
使用包含目錄有助於保持組織良好,但不是必需的。
如果文件包含PHP代碼,則應將其保存為.php文件 - 否則如果直接調用該代碼將無法運行。 這將為您留下一個文件,該文件的行為方式會有所不同,具體取決於訪問方式,這可能不是您想要的,可能是安全威脅。
為了解決這個問題,我看到有些人覆蓋了文件類型,因此服務器將所有.html文件視為PHP腳本 - 我不建議這樣做,因為即使它們不包含任何PHP,它也會減慢所有文件的處理速度。 遵循最小驚喜原則 - 讓您的HTML文件為.html,PHP文件為.php - 每個人都會更開心。
詹姆斯·穆瑟:
我想你現在指的是Apache SSI包括(參見http://httpd.apache.org/docs/2.2/howto/ssi.html#standard-footer )
不知道答案,我試過了,這是我的結果
Extension Call method PHP runs
.html browser no
.html Apache #include no
.html PHP include() yes
.php browser yes
.php Apache #include yes
.php PHP include() yes
(使用WinXP,Apache 2.2.3,PHP 5.2.26和CentOS 5.2,Apache 2.2.3,PHP 5.1.16進行測試)
所以你的答案是肯定的 - 如果你想通過Apache SSI #include調用PHP腳本,腳本必須有.php擴展名(或者其他擴展名,即.php4 .php5等,它在Apache注冊為PHP腳本),否則它不會運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.