Yii Framework Forum: 在 Wamp 環境開發 Cconsolecommand 無法使用 Soapclient - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

在 Wamp 環境開發 Cconsolecommand 無法使用 Soapclient Rate Topic: -----

#1 User is offline   bestlong 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 20-April 13

Posted 05 May 2013 - 11:25 AM

開發使用 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 進行作業
首先聲明,在相同的環境下已經有寫了一般 PHP 程式使用 SoapClient 並連接成功(呼叫帶參數的方法並且讀取回傳資料)

因為要排程執行所以試著寫成 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 環境的問題
0

#2 User is offline   痴苶呆傻 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 28
  • Joined: 29-July 11

Posted 05 May 2013 - 11:41 PM

http://www.php.net/m...equirements.php

查一下,貌似在编译 php 的时候需要一些配置才能使用SoapClient。
0

#3 User is offline   Steven Chen 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 31-October 12

Posted 06 May 2013 - 04:46 AM

phpinfo(); 看 soap 有没有打开
0

#4 User is offline   bestlong 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 11
  • Joined: 20-April 13

Posted 06 May 2013 - 10:22 AM

同樣的程式送到 Linux 環境執行不會出現錯誤

不過我找到真正的原因了,自己太久沒有用到 CLI 環境了,理所當然的認為在 Web 看到 phpinfo() 內有 SOAP 擴充模組就可以了

使用 WAMP 的環境
在 apache 啟動所使用的 php.ini (在網頁中檢視 phpinfo();)
與 CLI (命令列模式)(php.exe -i)所使用的不同

所以解決方式有兩種
1. 同時修改兩邊的 php.ini 檔案設定
2. 或是在 CLI 執行 php.exe 時使用 -c 指定同一個 php.ini 檔案
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users