2011-12-05 120 views
2

使用PHP語言本身編寫常規PHP文件可能嗎?
是否與編寫.txt文件相同?
或者還有什麼我應該知道的?使用PHP代碼寫入PHP文件?

每當我保存記錄到數據庫中,我要覆蓋相同的文件myConfig.php,它應該包含這樣的事情:

<?php 

    $myVar = "myValue"; 

?> 
+4

什麼,當你嘗試過了? – geoffspear

+0

我必須承認我沒有嘗試過:基本上是因爲我認爲它與編寫常規txt文件不同。這是個好主意,因爲我用fopen等來創建我的文件,而file_put_contents更緊湊。 – AsTheWormTurns

+0

@AsTheWormTurns:先嚐試,稍後再問。謝謝 –

回答

12

編寫PHP文件是沒有比寫作其他文本文件不同。一種方法是使用file_put_contents()。某事的大致像這應該工作:

file_put_contents('myConfig.php', "<?php 

    \$myVar = \"myValue\"; 

?>"); 

你必須確保PHP是運行在用戶有權寫入指定目錄下的文件。這是一個常見的陷阱。如果它不起作用,請檢查您的錯誤日誌以查找權限錯誤。

在附註上,基於從數據庫加載數據動態編寫php代碼可能會導致安全漏洞。具體來說,它可能會允許惡意用戶將任意php代碼注入到系統中並執行它。如果數據庫中的數據來自用戶填寫的Web表單,則尤其如此。要特別小心。驗證,消毒並正確編碼所有動態值。實際上最好的事情是退後一步,重新考慮你的設計。你真的需要動態地將這些配置文件寫爲php文件嗎?你可以使用ini文件嗎? (提示:parse_ini_file())。或者,您是否可以直接使用數據庫中的配置值而無需編寫文件?

+2

我想這比比較好的答案只是說「是」。 – zaf

+0

@Asaph:我們還需要$ myVar之前的斜槓嗎? – AsTheWormTurns

+0

@AsTheWormTurns:是的!接得好。我已經更新了我的答案。 – Asaph

2

如果您的權限是正確的,它應該很好地工作:

<?php 
file_put_contents('selfwrite2.php',<<<END 
<?php echo "Hello World!"; 
END 
); 
include 'selfwrite2.php';