我正在尝试使用以下PHP代码为运行的Soap Web服务生成WSDL(代码在Windows 7上的Xampp中运行):
<?php
include('Zend/Soap/AutoDiscover');
$autodiscover = new Zend_Soap_AutoDiscover();
$autodiscover->setClass('MyService')
->setUri('http://localhost/Public_Web_Service')
->setLocation('http://localhost/Public_Web_Service/server.php')
->setServiceName('MyService');
$wsdl = $autodiscover->generate();
$wsdl->dump("C:/xampp/htdocs/file.wsdl");
?>
警告:include(C:\ xampp \ php \ pear \ Zend \ Soap \ AutoDiscover):无法打开流:第2行的C:\ xampp \ htdocs \ Public_Web_Service \ zend-wsdl.php中的权限被拒绝
警告:include():在C中打开'Zend / Soap / AutoDiscover'以包含(include_path ='.; C:\ xampp \ php \ PEAR; c:\ xampp \ php \ PEAR \ Zend')失败:第2行\ xampp \ htdocs \ Public_Web_Service \ zend-wsdl.php
我是Zend的新手,我主要关注用PHP创建Soap Web服务。
非常感谢任何帮助。
谢谢,
John Cleaver
答案 0 :(得分:0)
变化:
include('Zend/Soap/AutoDiscover");
要:
include('Zend/Soap/AutoDiscover.php");
include()在服务器上查找物理文件 - 因此文件部分需要反映确切的文件名。
你正在使用它看起来像Zend Framework 1。在您的应用程序中,您可以在引导程序(启动)脚本中使用类似的内容:
function myAutoload($className)
{
$classArray = explode("_", $className);
foreach ($classArray as $key => $value) {
$classArray[$key] = ucfirst($value);
}
$className = implode('/', $classArray);
require_once($className . ".php");
}
spl_autoload_register("myAutoload");
然后你永远不需要包含()任何东西 - 它只是自动加载。但请注意,这是传统功能。 Zend Framework 2以及其他现代框架不会出于某种原因使用此功能。我仍然是Zend Framework 1的忠实粉丝,因为它具有用户友好性 - 这是大多数现代框架所缺乏的。如果您想继续使用Zend Framework 1,上面的代码片段可以为您节省大量时间。