3

运行phpagi时遇到问题:

-- Executing [123@DLPN_C:1] AGI("SIP/1000-00000001", "hello_world.php") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/hello_world.php
hello_world.php: Failed to execute '/var/lib/asterisk/agi-bin/hello_world.php': Exec format error
-- Auto fallthrough, channel 'SIP/1000-00000001' status is 'UNKNOWN' Scheduling destruction of SIP dialog '343930130' in 32000 ms (Method: INVITE)

从命令行:

root@asterisk-test:/var/lib/asterisk/agi-bin# php5 -q hello_world.php 
#!/usr/bin/php5 -q

附加信息:

-rwxr-xr-x  1 root     root       757 Mar 29 19:32 hello_world.php
drwxrwxr-x  4 root     root      4096 Mar 29 19:44 phpagi
-rwxr-xr-x  1 root     root     25079 Sep 30  2010 phpagi-asmanager.php
-rwxr-xr-x  1 root     root      2322 Sep 30  2010 phpagi-fastagi.php
-rwxr-xr-x  1 root     root     67615 Sep 30  2010 phpagi.php

你好世界的来源:http ://www.eder.us/projects/phpagi/phpagi/api-docs/__examplesource/exsource_home_html_projects_phpagi_phpagi_examples_dtmf.php_acb7257145e4a5249182c8373cd8e848.html

4

4 回答 4

5

执行格式错误来自/bin/bash,星号hello_world.php作为 bash 脚本执行。

社邦

如果添加正确的shebang,脚本将由给定的 PHP 解释器执行。第一行告诉系统哪个程序应该运行脚本。

#!/usr/bin/env php

要测试你的 shebang,请执行脚本本身,而不是 PHP:
root@asterisk-test:/var/lib/asterisk/agi-bin# ./hello_world.php

确保它是可执行的:
root@asterisk-test:/var/lib/asterisk/agi-bin# chmod +x hello_world.php

替代包装

创建一个执行 PHP 脚本的 bash 脚本。

例如 hello_world.sh:
/usr/bin/php hello_world.php

并在 Dialplan 中调用它AGI("hello_world.sh")

确保 shellscript 是可执行的chmod +x hello_world.sh

于 2013-04-01T11:52:01.970 回答
3

我在顶部脚本上添加了以下行以使其为我工作

#!/usr/bin/php -q
于 2013-07-14T14:45:15.233 回答
1

你的问题不是星号问题,而是一般的linux问题。

请从您的命令行尝试以下:

su asterisk -c "/var/lib/asterisk/agi-bin/hello_world.php"

最可能的原因:php 路径不正确或 selinux 已启用但未配置。

于 2013-03-30T18:45:59.477 回答
0

您能否检查您的extensions.confor extensions_custom.conf,如果扩展名和优先级不连续,也会发生此错误。

请检查以下示例:

[context]
exten => 1,1,Answer()
exten => 1,2,AGI(your-agi-script)
exten => 1,3,Hangup()
于 2014-07-13T15:49:44.713 回答