繁体   English   中英

无法在 AGI 星号中执行 php 脚本,没有这样的文件或目录

[英]failed to execute a php script in AGI asterisk, No such file or directory

我正在使用 AGI(星号网关接口)从拨号计划运行 php 脚本

我的拨号计划看起来像

exten =>2600,1,Playback(hello-world)

same =>n,AGI(agiscript.php)

same =>n,Hangup()

agiscript.php 看起来像

`#!/usr/bin/php -q 
<?php
require_once('dbconnect.php');
db_connect();
$sql = "update oicall_main set balance='100' where username='100';";
$result = mysql_query($sql);
?>`

agi set debug on 的 cli 输出是

 ` -- <SIP/example-00000001> Playing 'hello-world.gsm' (language 'en')
    -- Executing [2600@demo:2] AGI("SIP/example-00000001", "agiscript.php") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/agiscript.php
<SIP/example-00000001>AGI Tx >> agi_request: agiscript.php
<SIP/example-00000001>AGI Tx >> agi_channel: SIP/example-00000001
<SIP/example-00000001>AGI Tx >> agi_language: en
<SIP/example-00000001>AGI Tx >> agi_type: SIP
<SIP/example-00000001>AGI Tx >> agi_uniqueid: 1435426730.1
<SIP/example-00000001>AGI Tx >> agi_version: 13.2.0
<SIP/example-00000001>AGI Tx >> agi_callerid: example
<SIP/example-00000001>AGI Tx >> agi_calleridname: unknown
<SIP/example-00000001>AGI Tx >> agi_callingpres: 0
<SIP/example-00000001>AGI Tx >> agi_callingani2: 0
<SIP/example-00000001>AGI Tx >> agi_callington: 0
<SIP/example-00000001>AGI Tx >> agi_callingtns: 0
<SIP/example-00000001>AGI Tx >> agi_dnid: 2600
<SIP/example-00000001>AGI Tx >> agi_rdnis: unknown
<SIP/example-00000001>AGI Tx >> agi_context: demo
<SIP/example-00000001>AGI Tx >> agi_extension: 2600
<SIP/example-00000001>AGI Tx >> agi_priority: 2
<SIP/example-00000001>AGI Tx >> agi_enhanced: 0.0
<SIP/example-00000001>AGI Tx >> agi_accountcode: 
<SIP/example-00000001>AGI Tx >> agi_threadid: 140718795228928
<SIP/example-00000001>AGI Tx >> 
<SIP/example-00000001>AGI Rx << verbose "Failed to execute '/var/lib/asterisk/agi-bin/agiscript.php': No such file or directory" 1
 agiscript.php: Failed to execute '/var/lib/asterisk/agi-bin/agiscript.php': No such file or directory
<SIP/example-00000001>AGI Tx >> 200 result=1`

这意味着文件包含其他文件或库,无法从此目录访问(可能未使用完整路径)

php-cli 或 php-mysql 或两者都丢失。 安装它们并重新加载星号。

对于 CentOS:

sudo yum install php-cli php-gd php-mysql

对于 Ubuntu/Debian:

sudo apt-get install php-cli php-gd php-mysql

在 Centos 上它运行良好。 您需要确保在asterisk.conf中正确列出了指向该文件夹astagidir => /usr/share/asterisk/agi-bin作为默认agi-bin文件夹的路径。 还需要有 de 依赖项。 我尝试过其他 linux 版本,但遇到了同样的问题。 确保您可以从 shell 运行 php -v,否则在您的 php 程序中使用 php-cli 而不是 #!/usr/bin/php。 最后一件事,需要正确添加 PATH 以便它可以从任何地方运行,否则你需要在你的 extensions.conf 上使用完整路径(调用你的 php 脚本完整路径 /var/lib/asterisk/agi-bin/agiscript.php为了让它在 asterisk CLI 设置为调试的情况下进行处理以查看它是否确实找到了它。它很痛苦,但是一旦它起作用,它就很棒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM