繁体   English   中英

将 PHP 从 5.6 升级到 7.3 后请求错误

[英]Request error after upgrading PHP from 5.6 to 7.3

我有一个脚本向 API 发出请求,然后将响应返回给 AJAX。 将我的服务器从 PHP 5.6 更新到 PHP 7.3 后,请求没有成功,只返回“null”。 这是我得到的错误:

PHP Warning: file_get_contents( https://api.ekata.com/3.3/identity_check ?'.primary.address.city=Los Angeles&primary.address.postal_code=90001&primary.address.state_code=CA&primary.address.street_line_1=7519+Wadsworth+ Ave&primary.name=SteveTest+SmithTest&primary.phone=9165551234.'&api_key=XXXXXXXXXX): 未能打开 stream: HTTP 请求失败!

这是 PHP:

<?php

# An HTTP GET request example
header('Content-Type: application/json');
$url = $_POST['url']; 

$json = file_get_contents('https://api.ekata.com/3.3/identity_check?'.$url.'&api_key=XXXXXXX');

$obj = json_decode($json);
echo json_encode($obj, JSON_PRETTY_PRINT);

您的错误消息清楚地表明 file_get_contents 尝试获取远程 url 失败。 您可能应该改用CURL 或者,查看 phpinfo() 的 output 并查找allow_url_fopen 如果这是0false ,那么您可以尝试更改 php.ini 设置,以允许 PHP 使用诸如 file_get_contents 之类的函数访问远程 URL。

请注意,如果您更改 php.ini,如果 PHP 作为模块运行,您可能需要重新启动 apache,或者如果您的机器正在运行 PHP-FPM,则需要重新启动 PHP-FPM。

编辑:我要补充一点,您的 PHP 脚本应该在咳嗽之前检查 file_get_contents 调用的结果。 If the result is empty, you should probably have your PHP script cough up some kind of error object and have your javascript check for an error condition before trying to operate on the JSON results.

所以问题是 city 字段中有一个空格,所以 API URL 无效。 在我开始真正查看“网络/响应”选项卡之前并不明显

https://proapi.whitepages.com/3.3/lead_verify?primary.address.city=Los Angeles&primary.address.postal_code=90001

我将此添加到我的 php 文件中并成功发送:

$url = str_replace(" ", "%20", $url);

不过,我确实需要查看 CURL,所以我将在我们的 DEV 网站上这样做。 谢谢大家帮我解决这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM