虽然尝试跟踪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似乎不喜欢它。
答案 0 :(得分:0)
那是因为您没有在php.ini
文件中包含WSO2脚本。脚本应该与分发包一起分发(应该有scripts
目录)。将该目录保存在适合您的情况下(在您的系统中的某个位置,或项目中的某个位置,由您决定),然后将路径放在php.ini
文件中的该目录中,如的是:
include_path = "/path/to/wso2/scripts"
最终你可以将wso2脚本目录放在php include目录中。在任何情况下,您都应该重新启动apache服务,例如:
sudo service apache2 restart
它应该有用。