2013-03-30 101 views
3

運行phpagi當遇到一個問題:PHPAGI:執行格式錯誤

-- Executing [[email protected]_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) 

從命令行:

[email protected]:/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 

的Hello World來源:http://www.eder.us/projects/phpagi/phpagi/api-docs/__examplesource/exsource_home_html_projects_phpagi_phpagi_examples_dtmf.php_acb7257145e4a5249182c8373cd8e848.html

+0

在源'在/ usr/local/bin目錄/ php'並在例如'在/ usr/bin中/ php5',什麼是'-q'開關? – clover

+0

安靜模式。更多信息在這裏:http://stackoverflow.com/questions/5777792/what-does-it-mean-to-run-php-in-quiet-mode – AWippler

回答

1

你的問題不是星號問題,而是一般的Linux問題。

請從您的命令行下面的嘗試:

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

最likly原因:PHP路徑不正確或SELinux的啓用並沒有配置。

+0

此命令後沒有出現。 – AWippler

+0

檢查您是否擁有/ usr/bin/text2wave並且它是可遷移的。 – arheops

+0

我這樣做。 text2wave --help text2wave [選項]文本文件 將文本文件轉換爲波形 – AWippler

4

執行格式錯誤來自/bin/bash,星號作爲bash腳本執行hello_world.php

家當

如果添加了正確shebang,腳本獲取由給定PHP intepreter執行。 第一行告訴系統哪個程序應該運行腳本。

#!/usr/bin/env php

要測試你的家當,執行腳本本身,而不是由PHP:
[email protected]:/var/lib/asterisk/agi-bin# ./hello_world.php

確保它是可執行文件:
[email protected]:/var/lib/asterisk/agi-bin# chmod +x hello_world.php

替代包裝

Crea一個執行PHP腳本的bash腳本。

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

,並調用它的撥號方案AGI("hello_world.sh")

確保shellcript可執行chmod +x hello_world.sh

+0

./hello_world.php沒有工作,但PHP hello_world.php工作。 – AWippler

+0

'。/ hello_world.php'必須通過星號來執行它,你應該將shebang調整爲php使用的二進制文件,通過執行'which php'並確保它是可執行文件可以看到。 – pce

+0

我有/ usr/bin/php和/ usr/bin/php5。 php是一個到php5的鏈接。 – AWippler

2

我添加以下頂部腳本行得到它的工作對我來說

#!/usr/bin/php -q 
0

請問您檢查您的extensions.confextensions_custom.conf,如果擴展和優先級是不連續的,也會發生這種錯誤。

請檢查下面的例子:

[context] 
exten => 1,1,Answer() 
exten => 1,2,AGI(your-agi-script) 
exten => 1,3,Hangup()