Apache-2.2
如何防止 PHP 執行 shell 命令?
如何防止 apache 執行 bash 腳本?任何 php 腳本都無法在 bash 中執行命令(例如,將添加指向我的 php 和 html 文件的連結的命令)。有沒有辦法做到這一點??
編輯:我想到的任何 bash 命令不僅是 .sh 文件
您可能想查看 open_basedir 配置參數。不是你問題的真正答案,但它是相關的。為每個站點設置一個 basedir 是個好主意,例如“/var/www/site:/usr/share/php:/tmp”。(每台機器上的 /usr/share/php 可能不同)。
要真正回答您的問題:您也可以將其放入 .htaccess 中:
<Files *.sh> ForceType 'text/plain; charset=UTF-8' </Files>
Apache 本身不能“執行”bash 腳本或命令。我認為您真正要問的問題是“如何防止 PHP 執行 shell 命令?”。
不幸的是,這裡的其他兩個答案是不正確的,並且提供了不充分的解決方案來實現這一點。
open_basedir
僅影響 PHP 可以打開哪些文件,例如通過fopen()
. 您可以使用以下簡單程式碼測試是否仍然可以執行 shell 命令:<?php ini_set('open_basedir', '/tmp'); system('ls');
要真正限制 PHP 可以執行的 shell 命令,您必須使用安全模式。但是您應該知道,安全模式在 PHP 5.3 中已被棄用,並且肯定會在未來的版本中被刪除。啟用安全模式會限制對 許多“不安全”功能的訪問,特別是
exec()
、system()
和passthru()
。但是,您應該再次意識到,強烈建議不要使用安全模式。
一旦刪除了安全模式,您將不再擁有限制 PHP 可以執行哪些命令的方法。