Asterisk 无法执行'/usr/share/asterisk/agi-bin/call_handle.php':权限被拒绝

Asterisk Failed to execute '/usr/share/asterisk/agi-bin/call_handle.php': Permission denied

服务器:Ubunto

星号版本:11.x

目录:/usr/share/asterisk/agi-bin/ 文件:call_handle.php

目录权限:755根根 文件权限:755 root root

asterisk.conf

astagidir => /usr/share/asterisk/agi-bin

extensions.conf

same  => n,AGI(call_handle.php)

当我拨打任何号码时,这个 AGI PHP 脚本是 运行。 但是,它会在星号控制台中给我这条消息。

Asterisk Failed to execute '/usr/share/asterisk/agi-bin/call_handle.php': Permission denied

我不确定为什么会出现此消息。它具有 执行 权限 ROOT 用户

可能的问题似乎是文件 ('/usr/share/asterisk/agi-bin/call_handle.php') 不属于 Asterisk 守护程序的用户组 asterisk:asterisk

也就是说 - Asterisk 守护进程应该拥有这个文件的所有权。

其次,也有可能实际上运行这个Asterisk守护进程的用户没有这个daemon.It的执行权限。

首先确保文件可以执行

chmod a+x /usr/share/asterisk/agi-bin/call_handle.php

之后检查 selinux 是否未启用或设置正确

在 Centos/Redhat

上禁用 selinux
 echo "SELINUX=disabled" > /etc/sysconfig/selinux 

之后需要重启

我自己得到了答案: 在我的 php 脚本中设置 PHP 环境,它将 运行 加星号。

我在 php 文件的第一行设置了以下内容:

#!/usr/bin/env php

参考:PHPAGI: Exec format error