执行shell命令时,网页上没有输出PHP

时间:2016-04-19 17:44:06

标签: php linux shell asterisk

我正在尝试从php执行Linux shell命令,但网页上没有输出。如果我试图从linux cosole执行php页面,它的工作正常。

PHP代码:

<?php 
    $result = shell_exec('asterisk -rx "core show channels concise"');
    $ccount =shell_exec('asterisk -rx "core show channels count"');
    echo $result;
    echo $ccount;
?>

以上代码未在网页上提供任何输出。但是在linux控制台上它的woking。 e.g。

  

[abc @ host sysadminman] #php myfile.php

5 个答案:

答案 0 :(得分:1)

/etc/asterisk.conf 中也可以轻松更改Asterisk控件套接字权限:

[files]
astctlpermissions = 0660
astctlowner = root
astctlgroup = apache
astctl = asterisk.ctl

答案 1 :(得分:0)

首先,你的问题是不完整的,因为你没有显示预期的输出。但除此之外,你在那里做了一些常见的错误。 首先,您将以root用户身份测试脚本(# php ...),但您的httpd不是以root身份提供脚本。所以你的测试没用。你应该切换到正确的用户(很可能是www-data,然后检查从shell运行你的脚本。很可能它会因为两个常见原因之一而失败 - 运行asterisk程序的权限不足或者{{{{ 1}}没有指向$PATH所在的地方。

答案 2 :(得分:0)

我同意Marcin。

我建议您编写脚本来执行这些命令并将结果放到某个存储(例如文本或数据库)中。使用cron在root中运行它。然后,您从网页上的存储中读取数据。

如果您想要实时响应,则必须始终运行cron,尽管它会消耗服务器资源。这是你必须考虑的权衡。它取决于你想从网站上获得什么。

答案 3 :(得分:0)

使用sudo以root或Asterisk用户身份运行命令。您可以将sudo配置为仅允许在没有密码的情况下执行特定命令。

答案 4 :(得分:0)

检查disable_functions中的php.ini。 Mb shell_exec刚关闭Web服务器