我们刚移至新服务器以获取TLS 1.2。新服务器需要PHP 5.6。在大多数情况下,我的代码工作。几个例外。我有来自不同供应商的两个SOAP API流程。一个工作正常,另一个返回以下内容:
Error: A847E54F5AEA4E798rt0.c.ie.o5DF59@4p7098Fs1lFf4v892c4m returned no data
中间部分是来自API的令牌,用于捕获响应中的数据流。问题是在收到令牌后,其余的响应为空。这是基于此五9的API的相关代码:如何使用SOAP API和基本身份验证
提取报告$runReportResult = $client->runReport($runReportParam);
if(isset($runReportResult->return)){
$runReportData = $runReportResult->return;
$isReportRunningParam["identifier"] = $runReportData;
$isReportRunningParam["timeout"] = 10;
$isReportRunningResult = $client->isReportRunning($isReportRunningParam);
if(empty($isReportRunningResult->return)){
$getReportResultParam["identifier"] = $runReportData;
$getReportResult = $client->getReportResult($getReportResultParam);
if(isset($getReportResult->return->records)){
$getReportResultData = $getReportResult->return->records;
// data processing stuff removed for clarity
} else {
echo "Error: " . $runReportData . " returned no data";
}
} else {
echo "Error: " . $runReportData . " exceeded the report runtime limit";
}
} else {
echo "Error: " . $runReportParam["reportName"] . " wasn't found";
}
这条线在新服务器上始终被抛弃。
回声"错误:"。$ runreportdata。"没有返回数据";$ RunReportData是变化的令牌值,因此我得到了响应,但实际数据没有做到这一点。它必须是某种服务器问题,只需要一点帮助跟踪。
答案令人发疯,导致了另一个问题。
服务器设置为芝加哥时间。php脚本正在使用以下显示的UTC:
echo date('Y-m-d H:i:s', time());
因此,实际上,我将来在没有可用数据的情况下要求报告。
新问题,为什么PHP使用UTC而不是服务器时间?在INI文件中,它设置为UTC!
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "UCT"
希望这有助于某人节省一些时间!