http_code 0 与 Redhat php curl

http_code 0 with Redhat php curl

提问人:Schwarz Software 提问时间:11/14/2023 最后编辑:Schwarz Software 更新时间:11/20/2023 访问量:105

问:

赏金将于明天到期。这个问题的答案有资格获得 +50 声望赏金。施瓦茨软件公司希望引起人们对这个问题的更多关注
指导我采取正确的步骤来解决此问题

我可以使用 lynx 从服务器访问网站。当我尝试使用 php curl 指令访问同一网站时,我从同一数据中心的另一台 redhat 服务器上的相同 php 代码中获取。我对服务器具有管理员访问权限。http_code=>0curl_getinfo($ch);

我尝试过 php 7.4 和 php 8.0 当我调用我不确定如何调试此错误时,curl 已启用!phpinfo();

它是 RHEL 8.8

这是curl_getinfo($ch);

数组 ( [url] =>
https://..... [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [文件时间] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.055895 [namelookup_time] => 0.105978 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => [certinfo] => 数组 ( ) [primary_port] => 0 [local_ip] => [local_port] => 0 [http_version] => 0 [协议] => 0 [ssl_verifyresult] => 0 [方案] => [appconnect_time_us] => 0 [connect_time_us] => 0 [namelookup_time_us] => 105978 [pretransfer_time_us] => 0


[redirect_time_us] => 0 [starttransfer_time_us] => 0 [total_time_us] => 55895 )

php 红帽

评论

1赞 shingo 11/14/2023
Setopt CURLOPT_VERBOSE = true,然后比较服务器之间的信息。

答:

0赞 cetver 11/17/2023 #1

我可以使用 lynx 访问网站

由于 cookie,您可能无法通过 curl cli 访问它。

# err
$ curl https:// --verbose
# suc
$ curl https:// \
      --verbose \
      --cookie="/tmp/cookie.txt" \
      --cookie-jar="/tmp/cookie.txt"

PHP表示

$cookieFile = '/tmp/cookie.txt';
$ch = curl_init($url);
curl_setopt_array($ch, [
   CURLOPT_COOKIEJAR => $cookieFile,
   CURLOPT_COOKIEFILE => $cookieFile,
   // other options
]);
curl_exec($ch);
curl_close($ch);

评论

0赞 Schwarz Software 11/20/2023
没有变化。我将cookie设置为cookie .txt而不是 /tmp/cookie.txt,但我得到相同的错误并且没有响应
2赞 Schwarz Software 11/20/2023 #2
setsebool -P httpd_can_network_connect on

这奏效了。完整的答案在这里:CURL 无法从 Red Hat、Apache、PHP、AWS 上的 Web 浏览器运行