使用PHP語言本身編寫常規PHP文件可能嗎?
是否與編寫.txt文件相同?
或者還有什麼我應該知道的?使用PHP代碼寫入PHP文件?
每當我保存記錄到數據庫中,我要覆蓋相同的文件myConfig.php
,它應該包含這樣的事情:
<?php
$myVar = "myValue";
?>
使用PHP語言本身編寫常規PHP文件可能嗎?
是否與編寫.txt文件相同?
或者還有什麼我應該知道的?使用PHP代碼寫入PHP文件?
每當我保存記錄到數據庫中,我要覆蓋相同的文件myConfig.php
,它應該包含這樣的事情:
<?php
$myVar = "myValue";
?>
編寫PHP文件是沒有比寫作其他文本文件不同。一種方法是使用file_put_contents()
。某事的大致像這應該工作:
file_put_contents('myConfig.php', "<?php
\$myVar = \"myValue\";
?>");
你必須確保PHP是運行在用戶有權寫入指定目錄下的文件。這是一個常見的陷阱。如果它不起作用,請檢查您的錯誤日誌以查找權限錯誤。
在附註上,基於從數據庫加載數據動態編寫php代碼可能會導致安全漏洞。具體來說,它可能會允許惡意用戶將任意php代碼注入到系統中並執行它。如果數據庫中的數據來自用戶填寫的Web表單,則尤其如此。要特別小心。驗證,消毒並正確編碼所有動態值。實際上最好的事情是退後一步,重新考慮你的設計。你真的需要動態地將這些配置文件寫爲php文件嗎?你可以使用ini文件嗎? (提示:parse_ini_file()
)。或者,您是否可以直接使用數據庫中的配置值而無需編寫文件?
我想這比比較好的答案只是說「是」。 – zaf
@Asaph:我們還需要$ myVar之前的斜槓嗎? – AsTheWormTurns
@AsTheWormTurns:是的!接得好。我已經更新了我的答案。 – Asaph
如果您的權限是正確的,它應該很好地工作:
<?php
file_put_contents('selfwrite2.php',<<<END
<?php echo "Hello World!";
END
);
include 'selfwrite2.php';
什麼,當你嘗試過了? – geoffspear
我必須承認我沒有嘗試過:基本上是因爲我認爲它與編寫常規txt文件不同。這是個好主意,因爲我用fopen等來創建我的文件,而file_put_contents更緊湊。 – AsTheWormTurns
@AsTheWormTurns:先嚐試,稍後再問。謝謝 –