PHP 5.3.10 SoapServer::handle 找不到函数

我在 Apache2 错误日志中收到此错误:


PHP Fatal error:  Function 'ns1:getClients' doesn't exist


我检查了为什么 PHP Soap 服务器没有在类中找到方法Client_API并且看不到任何课程这里的index.php文件:


require(INCLUDES_DIR.'BaseService.class.php');

require($interfaceFile);

require($serviceFile); // loads  /var/www/official-productionapi/includes/Client.service.php

//...

$server = new SoapServer(null, array ('uri'=>'', 'trace' => 1,  'connection_timeout' => intval(600)));

$server->setClass($serviceName.CLASS_SUFFIX); // -- e.g. 'Client_API'

$server->handle();

包含缺失方法的类:


class Client_API extends BaseService implements Client_API_Interface

{   

    public function getClients($range = 10, $search, $accessUserID = null)

    {

        if(!$this->Authenticated){

            throw new SoapFault('Server', 'Authorization failed: Wrong username or password');

        }

        $max = 100;

        $range = (int)$range;

        if($range > $max){

            $range = $max;

        }

        $clients = array();

        $db = Database::getInstance();

        if(null !== $accessUserID){

            $sql = "SELECT * FROM clients as c, users_clients_access as uac WHERE c.ClientID = uac.ClientID AND uac.UserID = '".$db->escape($accessUserID)."' AND c.IsShopAssistClient = 0 AND (c.ClientName LIKE '".$db->escape($search)."%' OR c.Tag LIKE '".$db->escape($search)."%') ORDER BY c.ClientName Asc LIMIT $range";


        }else{

            $sql = "SELECT * FROM clients  WHERE IsShopAssistClient = 0 AND (ClientName LIKE '".$db->escape($search)."%' OR Tag LIKE '".$db->escape($search)."%') ORDER BY ClientName Asc LIMIT $range";

        }

        $clientQ = $db->query($sql);

        while($client = $db->fetch_array($clientQ)){

            $arr = array();

            $arr['PClientName'] = $client['ClientName'];

            $arr['PClientTag'] = $client['Tag'];

            $clients[$client['ClientID']] = $arr;

        }

        return $clients;

    }

//...

任何帮助将不胜感激,我一直在考虑它是否与 PHP 版本不匹配有关,它在 5.3.3 版上工作,但在 5.3.10 版上没有。所以只有细微的差别。


慕婉清6462132
浏览 122回答 1
1回答

拉风的咖菲猫

我已经能够通过将uri选项设置为'uri'=>'api'. 似乎把它留空不是一个好主意。它仍然让我感到困惑,它如何在 Windows 上的相同版本的 PHP 上运行得很好。这篇文章将我引向了我的答案:非 WSDL 模式下的 SOAP 问题。
打开App,查看更多内容
随时随地看视频慕课网APP