如何防止apache执行bash脚本? 任何PHP脚本不能在bash中执行命令(例如,将添加链接到我的PHP和HTML文件的命令)。 有没有办法做到这一点??
编辑:我有我的脑海里任何bash命令不仅.sh文件
你可能想看看open_basedirconfiguration参数。 不是你的问题的答案,而是相关的。 像“/ var / www / site:/ usr / share / php:/ tmp”这样的每个站点设置一个basedir是个好主意。 (/ usr / share / php可以在每台机器上不同)。
要真正回答你的问题:你也可以把它放在一个.htaccess中:
<Files *.sh> ForceType 'text/plain; charset=UTF-8' </Files>
您可以使用php.ini中的disable_functions指令禁用对PHP中特定函数的访问,例如:
disable_functions = exec,system,print
或者,如果你想防止PHP编辑其他文本文件的内容(如你的评论中所述),你可以用文件系统权限来保护它们 – 使得web服务器用户(或PHP执行的用户)没有写入文件的权限。
参考:
http://www.cyberciti.biz/faq/linux-unix-apache-lighttpd-phpini-disable-functions/
Apache本身不能“执行”bash脚本或命令。 我认为你真正要问的问题是,“我怎样才能防止PHP执行shell命令?”。
不幸的是,这里的其他两个答案是不正确的,并提供不足的解决scheme来实现这一点
open_basedir只影响PHP可以打开的文件,例如通过fopen() 。 你可以testingshell命令仍然可以使用这个简单的代码来执行:
<?php ini_set('open_basedir', '/tmp'); system('ls');
要真正限制PHP可执行的shell命令,您必须使用安全模式 。 但是,您应该知道, 安全模式在PHP 5.3中已被弃用,并且在将来的版本中肯定会被删除 。 启用安全模式会限制访问许多“不安全”function ,特别是exec() , system()和passthru() 。
但是,你应该知道,安全模式的使用是非常不鼓励的 。
一旦安全模式被删除,你将不再拥有限制什么命令可以被PHP执行的手段。