You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL 8.8服务器PHP curl请求返回http_code=>0问题排查求助

问题与调试方案

问题描述

在RHEL 8.8服务器上,通过lynx可正常访问某HTTPS网站,但使用PHP curl指令访问时,curl_getinfo($ch)返回http_code => 0。同数据中心的另一台RedHat服务器运行相同PHP代码可正常工作,当前服务器拥有管理员权限,已尝试PHP 7.4和PHP 8.0版本,phpinfo()显示curl扩展已启用。

curl_getinfo输出:

Array ( 
    [url] => https://.....
    [content_type] => 
    [http_code] => 0 
    [header_size] => 0 
    [request_size] => 0 
    [filetime] => -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] => Array ( ) 
    [primary_port] => 0
    [local_ip] => 
    [local_port] => 0 
    [http_version] => 0 
    [protocol] => 0
    [ssl_verifyresult] => 0 
    [scheme] => 
    [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 
)

调试步骤

  • 系统级curl命令测试:直接在服务器终端执行curl -v https://目标域名,对比输出与正常服务器的差异,重点关注DNS解析、SSL握手、连接建立阶段的日志。
  • 检查PHP curl证书配置:查看phpinfo()中curl.cainfo和openssl.cafile的值,确保指向RHEL系统默认CA证书文件/etc/pki/tls/certs/ca-bundle.crt。若未配置,在php.ini中添加:
    curl.cainfo = /etc/pki/tls/certs/ca-bundle.crt
    openssl.cafile = /etc/pki/tls/certs/ca-bundle.crt
    
    重启PHP-FPM或Apache服务后重试。
  • 排查SELinux限制:临时关闭SELinux测试:setenforce 0,若恢复正常,添加永久允许规则:setsebool -P httpd_can_network_connect on。
  • 检查防火墙规则:对比两台服务器的firewall-cmd --list-all输出,确认当前服务器允许出站443端口请求。可临时关闭防火墙:systemctl stop firewalld验证,正常后调整规则。
  • 启用curl错误捕获:在PHP代码中添加错误输出,获取具体错误信息:
    $ch = curl_init('https://目标域名');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    if(curl_errno($ch)) {
        echo 'CURL错误:' . curl_error($ch);
    }
    var_dump(curl_getinfo($ch));
    curl_close($ch);
    
  • 验证DNS配置:对比两台服务器的/etc/resolv.conf,执行nslookup 目标域名和dig 目标域名确认解析结果一致。
  • 检查代理环境变量:确认两台服务器的http_proxy/https_proxy环境变量是否一致,若不需要代理,可在PHP代码中强制关闭:
    curl_setopt($ch, CURLOPT_PROXY, '');
    

内容的提问来源于stack exchange,提问作者Schwarz Software

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:38:11