2011-12-01 49 views
0

我有我的網站根目錄以外的SSI目錄(無功/網絡/共享/ SSI)php.ini中的include_path和SSI

我想在服務器上的所有虛擬目前存在的主機能夠訪問這個文件目錄,所以我在php.ini中添加了include_path的路徑

現在我可以簡單地執行以下操作來在此目錄中加載ssi文件。

<?php include 'header.htm'; ?> 

我的問題是 - 這是一個好的做法嗎?我應該知道這樣做的任何安全隱患嗎?

由於

+1

是否有你不想在包含語句中指定目錄的原因?像'<?php include('/ var/www/shared/ssi/header.html'); ?>'? – jsalonen

+0

這是一個共享服務器,還是您唯一的託管網站?如果它是一個共享服務器,那麼任何人都可能用惡意的東西替換你的header.htm。當然,無論如何他們可能會這樣做,但現在你已經提供了一個地方來毀壞你的所有網站。 –

+0

是的,我不想硬編碼它,因爲我有許多虛擬主機需要訪問ssi,它可以節省多次改變完整路徑,如果它改變。 – rix

回答

3

命令

<?php include 'header.htm'; ?> 

將執行內部header.htm任何PHP代碼。如果你不能完全信任它的內容,這不是一個好主意。在這種情況下,做

<?php readfile("header.htm"); ?> 

這將讀取該文件,在它執行任何PHP代碼,並輸出。

+0

好的,感謝您的反饋,這是我的解決方案。 我爲腳本臨時設置了包含路徑: set_include_path(get_include_path()。PATH_SEPARATOR。'/ var/www/shared/ssi /'); 然後使用: <?php readfile(「header.htm」,「true」); ?> 非常感謝 – rix