【问题标题】:PHP 5.3.10 SoapServer::handle not finding functionPHP 5.3.10 SoapServer::handle 找不到函数
【发布时间】:2020-03-22 12:36:43
【问题描述】:

我在 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 版上没有。所以只有细微的差别。

【问题讨论】:

  • PHP 5.3.10?这甚至不再出现在主要的supported versions page 上。 PHP 5.3 是end-of-lifed over five years ago。为了您所珍视的一切,请立即升级!最好升级到版本 7.2 或 7.3,但至少非常非常请升级到 PHP 5.3.29,这是 5.3 的最后一个版本。
  • @Chris 应用程序太旧了,无法在 PHP 7 上运行
  • 然后尽可能升级它。如果可以的话,升级应用程序本身。就像我说的,至少非常非常升级到PHP 5.3.29。你应该能够做到这一点而不会破坏任何东西。它将包含大量重要的安全更新(尽管它仍然包含大量安全漏洞)。

标签: php soap lamp


【解决方案1】:

我已经能够通过将uri 选项设置为'uri'=>'api' 来解决这个问题。似乎把它留空不是一个好主意。它仍然让我感到困惑,它在 Windows 上的相同版本的 PHP 上是如何工作的。

这篇文章让我找到了答案:Issues with SOAP in non-WSDL mode

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    相关资源
    最近更新 更多