我正在使用arch linux。我想执行更改系统IP的php文件。我做了
ifconfig eth0 192.168.163.137
在终端它工作正常。我尝试用
做同样的事情shell_exec('ifconfig eth0 192.168.163.137');
在一个php文件中,尝试从另一台通过路由器连接的PC上的远程Web浏览器打开页面。页面没有显示任何内容,代码也没有执行。我猜它是用户执行it.apache正在执行它的问题。所以我希望它由root运行。任何人请指导我执行我的代码。我甚至安装了sudo,只是把
shell_exec('sudo ifconfig......');
它也没有执行...请帮助...谢谢.. :)
答案 0 :(得分:3)
Sudo通常需要交互式shell来输入您的密码。这显然不会发生在PHP脚本中。如果您确定自己知道自己在做什么并且已经解决了安全问题,请尝试允许Apache用户在没有密码的情况下运行sudo,但仅限于某些命令。
例如,在sudoers文件中添加以下行将允许Apache在没有密码的情况下运行sudo,仅用于ifconfig命令。
apache ALL=NOPASSWD: /sbin/ifconfig
调整路径并添加任何参数以满足您的需求。
<强>注意:强>
可能是更好的选择:
答案 1 :(得分:0)
<强>了shell_exec 强>
当PHP以安全模式运行时,此功能被禁用。
文档:http://php.net/manual/en/function.shell-exec.php
那么,也许可以尝试调整你的php.ini
文件?
答案 2 :(得分:0)
将命令写入队列并让cron接收它们,验证它们(仅允许已知的好请求)并运行它们,然后用日期和结果标记该队列。
然后,您的最终用户可以使用ajax单击/等待更新。