【问题标题】:Odoo + Ripcord PHP XMLRPC library: "Could not access https://demo.odoo.com/start"Odoo + Ripcord PHP XMLRPC 库:“无法访问 https://demo.odoo.com/start”
【发布时间】:2017-05-01 16:00:10
【问题描述】:

我正在尝试从我的 PHP 脚本连接到 Odoo 服务器,但遇到了不一致的连接问题。

我有 3 个测试地点:

  1. 本地主机
  2. 域 A
  3. 域 B

还有 2 个测试脚本:

Odoo 演示

require_once("ripcord.php");
$info = ripcord::client('https://demo.odoo.com/start')->start();
print_r($info);

Odoo 目标服务器

require_once("ripcord.php");
$common = ripcord::client("###.###.###.##:8069/xmlrpc/2/common");
print_r($common->version());

这给了我奇怪和不一致的结果:

  • Lo​​calhost + Odoo 演示:成功
  • Lo​​calhost + Odoo 目标服务器:成功
  • 域 A + Odoo 演示:成功
  • 域 A + Odoo 目标服务器:无法访问###.###.###.##:8069
  • 域 B + Odoo 演示:无法访问 https://demo.odoo.com/start
  • 域 B + Odoo 目标服务器:无法访问###.###.###.##:8069

版本

本地主机:

  • PHP 版本:7.0.15
  • Ripcord 版本:0.9

服务器(域 A 和域 B):

  • PHP 版本:5.6.30
  • Ripcord 版本:0.9

奇怪的是域 A 和域 B 在同一台服务器上。哪些因素可以决定请求是否成功?更重要的是,如何才能从域 A 和域 B 成功访问 Odoo 目标服务器?

【问题讨论】:

    标签: php openerp odoo-8 xml-rpc ripcord


    【解决方案1】:

    原来我的问题有两个:

    1. 域 B 的默认 RipcurlTransport (Stream) 似乎存在问题;可能是文件系统权限的问题。改用 Curl 解决了无法连接到 Odoo 演示数据库的问题。
    2. 服务器在防火墙后面,需要允许到端口 8069 的传出连接。这解决了无法连接到生产数据库的问题。

    【讨论】:

    • RemiX,您能否详细说明您是如何解决问题的?当我使用 search() 方法 var_dump 记录时,我总是不断得到这个数组 { "faultCode"=> 3, "faultString"=> "Access Denied" } 。此外,当我调用 ripcord::client($url)->start() 方法时,我收到致命错误:Uncaught Ripcord_TransportException: Could not access
    • 我从事这项工作已经 4 年了,所以我不记得太多了。看来我通过切换到 curl 解决了域 B 上的问题(不要问我确切的命令,我不记得了),并且根本不使用 Ripcord。您是否尝试使用 curl 代替?您是否还检查了防火墙是否有到端口 8069 的传出连接?
    • 因此,我决定购买一些模块,而不是使用 Odoo Demo。就像你说的那样,我为新数据库的特定 IP 地址打开了 8069 端口(如“域 Z + Odoo 目标服务器”)。最后,它起作用了 :) :) 但我认为 start( ) 方法仅适用于 Odoo 演示,我的意思是以下代码不起作用: ripcord::client('http://###.###. ###.###:8069/start')->start();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    相关资源
    最近更新 更多