Zend (v1) XmlRpc客户机出现了以下错误:
带有消息“未能解析响应”的异常“Zend_XmlRpc_Client_FaultException”。
这是错误状态651。
调用永远不会到达所请求的类/方法,似乎调用不会像被阻塞或什么的那样被触发。我正在调试调用的方法,它没有被触发。
PHP版本为5.4。
编辑
以下是代码:
呼叫者类别:
require_once 'library/Zend/XmlRpc/Client.php';
class FrontService
{
private $client;
public function __construct($xmlRpc)
{
$this->client = new Zend_XmlRpc_Client($xmlRpc);
}
public function call($name, $params = array())
{
return $this->client->call($name, $params);
}
}呼叫全班:
$this->_fs = new FrontService(HM_Config::getParam("amf-url"));
$editos = $this->_fs->call('getEdito',$params_home);代号为:
include_once realpath(dirname(__FILE__) .'/..')
.'/application/bootstrap.php';
require_once '_config.php';
require_once 'DirectDbConnectionV2.php';
class FrontGateway extends DirectDbConnectionV2
{
public static $smStatic;
function __construct()
{
mysql_query("SET NAMES 'utf8'");
$this->sm = self::$smStatic;
$this->log = new Log();
$this->log->set_file('amfDbConnection');
$this->log->write('construct bordel');
}
}
FrontGateway::$smStatic = $sm;
$controllerManager = $sm->get('EditoWebsiteMVC\ControllerManager');
$controllerManager->run('EditoWebsite\Controller\UIGateway', 'xmlRpc');应执行的代码:
namespace EditoWebsite\Controller;
use EditoWebsiteMVC\AbstractController;
use EditoWebsiteMVC\ViewRender\CLI as CLIViewRender;
use EditoWebsiteMVC\ViewRender\HTMLTemplate as HTMLTemplateViewRender;
use Zend_XmlRpc_Server as XmlRpcServer;
class UIGatewayController extends AbstractController
{
public function xmlRpcAction()
{
$svr = new XmlRpcServer();
$svr->setClass('FrontGateway');
echo $svr->handle();
exit;
}
}getEdito方法中来自DirectDbConnectionV2的代码从未达到。
我需要在服务器上启用什么东西吗?还是我需要打开的港口?
编辑编辑
我应该指出,代码正在另一个我可以访问的服务器上工作,有什么我应该比较/检查的东西可以解决这个问题吗?
非常感谢
发布于 2018-03-30 17:36:31
我不认为有足够的信息,甚至可以作出猜测,但让我试试。
我也遇到过类似的问题,在那里发送的请求从未到达服务器。结果是,Zend_Http_Client_Adapter_Socket适配器绑定到IPv6,并且由于路由问题,请求从未到达服务器。
最后,解决问题的是:
$client->getAdapter()->setStreamContext(array(
'socket' => array('bindto' => '0:0'),
));其中$client是Zend_Http_Client的一个实例。
再说一次,这只是一次黑暗中的尝试,但可能值得一试。:)
编辑:
在您的示例中,您应该向FrontService构造函数添加以下内容:
$this->client->getHttpClient()->getAdapter()->setStreamContext(array(
'socket' => array('bindto' => '0:0'),
));编辑编辑:
因为回到1.9.0,Zend_Http_Client上没有Zend_Http_Client,所以您必须自己创建适配器并将其传递给http客户端:
public function __construct($xmlRpc)
{
$this->client = new Zend_XmlRpc_Client($xmlRpc);
$adapter = Zend_Http_Client_Adapter_Socket();
$adapter->setStreamContext(array(
'socket' => array('bindto' => '0:0'),
));
$this->client->getHttpClient()->setAdapter($adapter);
}干杯。
https://stackoverflow.com/questions/49578667
复制相似问题