開發使用 yii 框架的專案
在 Win7x64 + WAMP(wampserver2.2e-php5.3.13-httpd2.2.22-mysql5.5.24-32b) 環境
設定了系統變數 PHP_COMMAND=D:\wamp\bin\php\php5.3.13\php.exe
需要連接到遠端 Web Service 進行作業
[b]首先聲明,在相同的環境下已經有寫了一般 PHP 程式使用 SoapClient 並連接成功(呼叫帶參數的方法並且讀取回傳資料)
[/b]
因為要排程執行所以試著寫成 Yii Command 來執行
我在 protected/commands/ 新增一個 MySoapCommand.php 程式
程式碼內容如下(WSDL 網址經過修飾):
<?php
/**
* 透過 Soap 取得資料
*/
class MySoapCommand extends CConsoleCommand
{
public function run($args)
{
try
{
$client = new SoapClient('http://dotnetws.bestlong.idv.tw/websvc.asmx?wsdl');
} catch(SoapFault $e) {
die($e->getMessage());
}
}
}
然後進命令列執行 protected\yiic.bat 會出現
D:\wamp\www\yii-project\protected>yiic.bat
Yii command runner (based on Yii v1.1.13)
Usage: D:\wamp\www\yii-project\protected\yiic.php <command-name> [parameters...]
The following commands are available:
- message
- migrate
- mysoap
- shell
- webapp
To see individual command help, use the following:
D:\wamp\www\yii-project\protected\yiic.php help <command-name>
可以看到此時有出現一個 mysoap 命令
接著來執行看看
D:\wamp\www\yii-project\protected>yiic.bat mysoap
PHP Error[2]: include(SoapClient.php): failed to open stream: No such file or directory
in file D:\wamp\www\yii\framework\YiiBase.php at line 421
#0 D:\wamp\www\yii\framework\YiiBase.php(421): autoload()
#1 unknown(0): autoload()
#2 D:\wamp\www\yii-project\protected\commands\MySoapCommand.php(11): spl_autoload_call()
#3 D:\wamp\www\yii\framework\console\CConsoleCommandRunner.php(67): MySoapCommand->run()
#4 D:\wamp\www\yii\framework\console\CConsoleApplication.php(91): CConsoleCommandRunner->run()
#5 D:\wamp\www\yii\framework\base\CApplication.php(169): CConsoleApplication->processRequest()
#6 D:\wamp\www\yii\framework\yiic.php(33): CConsoleApplication->run()
#7 D:\wamp\www\yii-project\protected\yiic.php(7): require_once()
D:\wamp\www\yii-project\protected>
就出現找不到 SoapClient.php 的錯誤
這或許是 WAMP 環境的問題