从PHP中,我可以使用shell_exec运行命令,但不能运行bash文件
我运行此命令
sudo ls /var/www/
我得到结果
/var/www/1.sh
/var/www/2.sh
/var/www/3.sh
但是当我运行此命令时没有任何反应
$output = shell_exec('sudo sh /var/www/1.sh > /dev/null 2>&1');
echo "<pre>$output</pre>";
在1.sh中,我添加了此代码
#!/bin/bash
/usr/bin/echo "test" > TEST1.txt
它在我输入终端./1.sh时有效,因此仅来自php不能正常工作
服务器:centos 从PHP我认为我有执行命令的根本权限
答案 0 :(得分:1)
您的bash脚本已输出到TEST1.txt文件中,而不是输出到控制台中!
尝试:
#!/bin/bash
/usr/bin/echo "test"
或者那样
$output = shell_exec('sudo sh /var/www/1.sh 2>&1');
echo "<pre>" .file_get_contents('/var/www/TEST1.txt'). "</pre>";
该字符串是错误的!!!!
$ output = shell_exec('sudo sh /var/www/1.sh 2>&1');
&1
没有理由,因为没有定义
$ output = shell_exec('sudo sh /var/www/1.sh> / dev / null 2>&1');
在这种情况下,&1
=== /dev/null
答案 1 :(得分:1)
这将解决您的问题
$output = shell_exec('sudo /usr/bin/sh /var/www/1.sh > /dev/null 2>&1');