当 url 包含点或冒号时,PHP curl 请求结果为白页

PHP curl request results in white page when the url contains dots or colons

这只会发生在我的网络服务器上,不会发生在本地系统上。 我有一个像这样的 curl 请求

ini_set('display_errors', 1);
error_reporting(E_ALL);

$url = 'http://***.***.***.***:8080/api_v1/oauth/token';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$response = curl_exec($ch);

这会使页面加载一段时间,然后 returns 出现白屏。确实不可能显示错误、输出或其他任何内容。

每当我将 url 更改为另一个 url(存在或不存在)时,如果 url 有意义,我会得到正确的错误或输出,只要 url 不包含任何点或冒号...

是否有任何使用限制或我缺少的 curlopt? 我无法控制目标url,我需要消耗ip:port结构中的api。

更新

  1. 问题与目标 URL 或传入的数据无关:当我输入完全没有意义的 url 时会出现同样的问题 只要它不包含。或:
  2. 我猜这是网络服务器上的设置,因为我的所有测试在本地主机 (MAMP) 上都运行良好
  3. 不幸的是,我无法访问任何日志或文件,除了我自己上传的(one.com 网络托管)

更新 2

原来我的托管商阻止了所有流向隐式 IP 和 80 和 443 以外的端口的传出流量。 取消了我的订阅,现在选择了一家体面的供应商。 感谢帮助

正如@Quasimodo 建议的那样,如果我是你的话,我会查看日志文件。如果您在使用 Apache 的 Ubuntu 服务器上,请查看 /var/log/apache2/error.log。一个巧妙的技巧是打开终端并写入:

tail -f /var/log/apache2/error.log

这将打开到终端的 运行 流。然后你可以让你的 curl-request 崩溃(在你的浏览器中),然后返回到终端并查看你收到了哪些新的和有趣的错误。

很可能是您服务器上的某个配置文件。因此,如果您从该服务器编写一些规范,将会很有帮助,例如: - 您使用的网络服务器(Apache、Nginx 等) - PHP 版本 ... 您可以使用 phpinfo.

轻松找到所有这些信息

我最好的猜测是您需要 enable PHP_Curl 用于您的服务器配置,- 但它是一个从臀部射出的狂野牛仔。

加法 1

我看到你刚刚编辑了问题(它思考了一会儿然后给出了一个空白屏幕)。我会说,您的 curl-request 可能试图加载大量数据,并且您的 PHP-configuration 的上限为 128mb(或其他)。

我会检查 PHP 这两个值的信息:

max_input_vars
memory_limit

看看他们中的任何一个是否可疑地低。

原来我的托管商阻止了所有流向隐式 IP 和 80 和 443 以外的端口的传出流量。取消了我的订阅并现在选择了一个体面的提供商。感谢帮助