WSClient不会看到我的WSDL文件

时间:2014-08-06 10:31:03

标签: php soap wsdl wso2 wsh

虽然尝试跟踪wso2 wsf for PHP框架的演示,但我似乎无法运行几个示例脚本,即使我编译并安装了wso2 / wsf .so文件和所有内容

具体来说,在尝试运行WSDL的示例脚本时,我收到错误:

Warning: WSClient::getProxy(wsf_wsdl.php): failed to open stream: No such file or directory in /vagrant/public/test.php on line 8

运行此代码时:

try {

    $client = new WSClient(array("wsdl"=>"http://localhost:8888/samples/wsdl_mode/sample_wsdl_11.wsdl",
                                 ));

    $proxy = $client->getProxy();

    $return_val =  $proxy->QueryPurchaseOrder(array("productName"=> "Testing",
                                             "quantity" => 234,
                                             "date" => "2003-12-34",
                                             "orderNo" => 345));

    printf("<strong>Shipping address </strong><br/>");
    printf("Name : %s <br/>", $return_val["shipTo"]["name"]);
    printf("Street : %s <br/>", $return_val["shipTo"]["street"]);
    printf("City : %s <br/>", $return_val["shipTo"]["city"]);
    printf("State : %s <br/>", $return_val["shipTo"]["state"]);
    printf("Zip : %s <br/>", $return_val["shipTo"]["zip"]);

    printf("<br/><strong>Billing address </strong><br/>");
    printf("Name : %s <br/>", $return_val["billTo"]["name"]);
    printf("Street : %s <br/>", $return_val["billTo"]["street"]);
    printf("City : %s <br/>", $return_val["billTo"]["city"]);
    printf("State : %s <br/>", $return_val["billTo"]["state"]);
    printf("Zip : %s <br/>", $return_val["billTo"]["zip"]);

    printf("<br/><strong>Product info </strong><br/>");
    printf("Product ID : %s <br/>", $return_val["product"]["productId"]);
    printf("ShippingDate : %s <br/>", $return_val["product"]["shippingDate"]);
    printf("Status : %s <br/>", $return_val["product"]["status"]);

} catch (Exception $e) {

    printf("Message = %s\n",$e->getMessage());
}

文件肯定存在;当我在浏览器中运行它时,我自己获得.wsdl文件,但是WSClient似乎不喜欢它。

1 个答案:

答案 0 :(得分:0)

那是因为您没有在php.ini文件中包含WSO2脚本。脚本应该与分发包一起分发(应该有scripts目录)。将该目录保存在适合您的情况下(在您的系统中的某个位置,或项目中的某个位置,由您决定),然后将路径放在php.ini文件中的该目录中,如的是:

include_path = "/path/to/wso2/scripts"

最终你可以将wso2脚本目录放在php include目录中。在任何情况下,您都应该重新启动apache服务,例如:

sudo service apache2 restart

它应该有用。