我正在尝试从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
答案 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服务器