我正在尝试使用php运行shell脚本
shell脚本(/home/scripts/fix-perm.sh)在同一服务器
这是我正在尝试的代码
<?php
echo shell_exec('/home/scripts/fix-perm.sh');
?>
上面的代码不工作
我使用Linux服务器
有谁能帮帮我吗?Shell exec接受一个字符串,它需要是一个实际的命令。您现在传递给它一个文件路径。这不会被解释为"在此路径执行文件"。你可以做几件事。
你需要做的是用一个程序调用这个文件。按照注释中的建议,使用bash或sh调用它:
echo shell_exec('sh /home/scripts/fix-perm.sh');
另一个选项可以是:
$contents = file_get_contents('/home/scripts/fix-perm.sh');
echo shell_exec($contents);
我认为第一个选项会更好。
需要注意的是,所有用于执行外部程序的命令都需要实际的命令,而不是文件路径或其他东西。这适用于shell_exec、exec、passthru和其他。
我不确定,但你可以尝试在服务器上使用chmod +x /home/scripts/fix-perm.sh
,然后尝试…
首先您需要确保文件具有正确的权限
在您的服务器chmod u+x /home/scripts/fix-perm.sh
然后运行:echo shell_exec('sh /home/scripts/fix-perm.sh');
或者如果您想将结果输出到TXT文件:
shell_exec('sh /home/scripts/fix-perm.sh > /home/scripts/log.txt &');
我有一个类似的问题,即使我读了所有的帖子。我想执行一个文件。sh的路径到另一个文件夹,并保持结果在我的php页面(我不想关闭。sh,因为它正在寻找css的变化)。这里是我尝试的,但php端没有附加任何内容:
<?php
echo '<html><head>';
echo'</head><body>';
shell_exec('/bin/sh ../include/makeCss/makeWatch.sh');
echo '</body></html>';
?>
和makeWatch.sh
#!/bin/bash
sudo compass watch