dongli9894 2015-10-20 17:05
浏览 54

Zend Soap WSDL生成 - Windows权限错误

I am trying to generate a WSDL for a working Soap web service using the following PHP code (the code is running in Xampp on Windows 7):

<?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");
?>

However, when I run the code, I run into the following error message:

Warning: include(C:\xampp\php\pear\Zend\Soap\AutoDiscover): failed to open stream: Permission denied in C:\xampp\htdocs\Public_Web_Service\zend-wsdl.php on line 2

Warning: include(): Failed opening 'Zend/Soap/AutoDiscover' for inclusion (include_path='.;C:\xampp\php\PEAR;c:\xampp\php\PEAR\Zend') in C:\xampp\htdocs\Public_Web_Service\zend-wsdl.php on line 2

Fatal error: Class 'Zend_Soap_AutoDiscover' not found in C:\xampp\htdocs\Public_Web_Service\zend-wsdl.php on line 3

I am very new to Zend and my main focus is on creating Soap web services in PHP.

Any help would be greatly appreciated.

Thanks,

John Cleaver

  • 写回答

1条回答 默认 最新

  • duankuang7928 2015-10-20 22:23
    关注

    Change:

    include('Zend/Soap/AutoDiscover");
    

    To:

    include('Zend/Soap/AutoDiscover.php");
    

    include() looks for a physical file on your server - so the file part needs to reflect the exact file name.

    You're working with Zend Framework 1 it looks like. In your application you could use something like this in your bootstrap (startup) scripts:

    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");
    

    Then you never need to include() anything - it just automatically loads. But please note that this is legacy functionality. Zend Framework 2 as well as other modern frameworks do not use this feature for a reason. I'm still a big fan of Zend Framework 1 because of its user friendliness - something that most modern frameworks lack. If you want to keep using Zend Framework 1, the above snippet can save you a lot of time.

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)