我最近移动了服务器,并且自移动以来我的付款模块出现问题。我们从PHP 5.2迁移到PHP 5.4。
我们在xcart上安装了Realex支付模块来处理我们的付款,在结帐用户被发送到安全网站以输入他们的付款详细信息,付款流程但他们收到错误:您的交易已成功但有一个连接回商家网站的问题
Realex告诉我,302重定向导致问题,我们没有任何原因导致此重定向。
以下是从realex收到的日志:
27.08.2013 17:02:18 carbonaction $response_uri = https://www.energysavingwarehouse.co.uk/store/payment/cc_realex_redirect.php
27.08.2013 17:02:18 carbonaction $num_remaining = 0
27.08.2013 17:02:18 carbonaction $client_return_url = https://www.energysavingwarehouse.co.uk/store/payment/cc_realex_redirect.php
27.08.2013 17:02:18 carbonaction $num_remaining = 0
27.08.2013 17:02:18 carbonaction Return URL: https://www.energysavingwarehouse.co.uk/store/payment/cc_realex_redirect.php
27.08.2013 17:02:18 carbonaction Client Host: www.energysavingwarehouse.co.uk
27.08.2013 17:02:18 carbonaction Client URLs: store/payment/cc_realex_redirect.php
27.08.2013 17:02:18 carbonaction ..start POST request, UserAgent timeout set to 180 seconds.
27.08.2013 17:02:20 carbonaction ..end POST request, UserAgent returned the status: 302 Moved Temporarily
27.08.2013 17:02:20 carbonaction Error connecting to client site:Moved Temporarily
这在旧服务器上工作正常,我们最近转移到了vps,这里是否存在潜在的服务器配置问题?
感谢您的帮助。
利安
答案 0 :(得分:0)
当我访问https://www.energysavingwarehouse.co.uk/store/payment/cc_realex_redirect.php
时,302
重定向会将我退回../
。这可能是因为我正在进行GET
而不是POST
并且没有POST
个字段。
如果您已升级到较新版本的PHP,则配置可能已更改且代码不再找到所有POST
字段 - 之前$HTTP_POST_VARS[]
已合适,但现在您应该使用$_POST[]
,有时PHP可以配置为自动为每个POST
字段创建新变量 - 例如name=Owen
会自动创建值$name
的变量Owen
。特别是,register_globals
选项在5.4.0中已被完全删除,您现在需要在之前没有的情况下显式声明变量(参见http://php.net/manual/en/security.globals.php)。
您可以查看cc_realex_redirect.php
中的代码,了解触发302
重定向的方案吗?这应该是:
header('Location: ../');
然后添加一些日志记录以确保正确拾取所有POST
数据。这应该会引导您找到解决方案。