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


No output on web page PHP while executing shell command

我正试图从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控制台上,它令人惊叹。例如

[abc@hostsysadminman]#php-myfile.php

星号控制套接字权限也可以在/etc/星号.conf:中轻松更改

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

首先,您的问题是不完整的,因为您没有显示预期的输出。但除此之外,你还犯了一些常见的错误。首先,您将以root身份测试脚本(# php ...),但httpd并没有以root身份为脚本提供服务。所以你的测试毫无用处。您应该切换到正确的用户(最有可能是www-data,然后检查以从shell运行脚本。最有可能的原因是两个常见的原因之一-运行asterisk程序的权限不足或$PATH不完整,没有指向asterisk所在的位置。

我同意Marcin。

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

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

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

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