2017-05-05 42 views
1

我试图使用php脚本来执行shell脚本。不过,我在Web服务器上显然遇到了一些问题。在运行shell脚本的php上exec()的问题

我有一个名为switch_audio.sh的bash脚本。它基本上改变了系统的有效音频输出。

我也有运行下面的代码的script.php:

<?php 
    echo "It's working"; 
    exec("/var/www/html/switch_audio.sh"); 
?> 

当我执行php script.php它的正常工作。但是,当我尝试在网络浏览器上运行localhost/script.php时,我只是输出“回显”部分。

我已经尝试过:从php.ini中的禁用功能

  1. 删除 'EXEC()';
  2. 为此路径上的每个文件夹中的所有人授予从“/”到localhost文件夹的权限;

它有什么想法?

+0

阿帕奇可能使用不同的php.ini到CLI。你有没有检查Apache的php.ini? –

回答

0

你已经说了,你可以在你的php.ini配置外壳的功能,但它似乎它不工作尚未...所以也许:

  • 你没有重新启动Web服务器服务后,改变
  • 你在其他地方有更多的限制...也许ini_set在您的PHP文件。

作为提醒,确保你在你的php.ini文件做得很好,检查是否有这种说法:

disable_functions=exec,passthru,shell_exec 

也许你可以尝试,而不是EXEC其他类似PHP函数如shell_exec来检查它是否工作。或者,也许正在工作,没有展示任何东西

0

简单的解决方案:exec()返回一个字符串,但你也必须把它输出给用户:

<?php 
    echo "It's working"; 
    echo exec("/var/www/html/switch_audio.sh"); 
?>