首页 > 解决方案 > PHP Curl 错误 2 从浏览器执行脚本时初始化失败

问题描述

我对 curl 和 PHP 有一个奇怪的问题。

我的测试代码是这样的:

<?php

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.publicapis.org/random',
    CURLOPT_PROXY => 'proxy_url',
    CURLOPT_PROXYPORT => proxu_port,
    CURLOPT_HTTPPROXYTUNNEL => true,
    CURLOPT_FAILONERROR => true
)

$response = curl_exec($curl);
$info = curl_getinfo($curl);
$error = curl_errno($curl);
$errormsg = curl_strerror($error);
curl_close($curl);

var_dump("publicapis", "<br>", $response, "<br>", json_encode($info), $error, "<br>", $errormsg, "<br>");
?>

在与 ldap 用户连接的 linux 控制台php test.php上执行时,我的代码在检索时工作得很好,例如:

string(10) "publicapis"
string(4) "<br>"
bool(true)
string(4) "<br>"
string(588) "{"url":"https:\/\/api.publicapis.org\/random","content_type":"application\/json","http_code":200,"header_size":386,"request_size":166,"filetime":-1,"ssl_verify_result":0,"redirect_count":0,"total_time":0.629362,"namelookup_time":0.004174,"connect_time":0.005151,"pretransfer_time":0.47375,"size_upload":0,"size_download":260,"speed_download":413,"speed_upload":0,"download_content_length":260,"upload_content_length":0,"starttransfer_time":0.629316,"redirect_time":0,"redirect_url":"","primary_ip":"proxy_ip","certinfo":[],"primary_port":proxy_port,"local_ip":"local_ip_addres","local_port":local_port_number}"
int(0)
string(4) "<br>"
string(8) "No error"
string(4) "<br>"

但是在浏览器(server_url/test.php)上执行脚本时,我没有收到来自 curl 请求的任何响应,并且检索到的错误号是 2,它代表初始化失败。

string(10) "publicapis"
bool(false)
string(501) " 
{"url":"https:\/\/api.publicapis.org\/random","content_type":null,"http_code":0,"header_size":0,"request_size":0,"filetime":0,"ssl_verify_result":0,"redirect_count":0,"total_time":0,"namelookup_time":0,"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}"
int(2)
string(21) "Failed initialization"

我尝试使用curl_error($curl)进行调试,但没有得到有关错误的信息,我还尝试使用 CURLOPT_VERBOSE 和 CURLOPT_STDERR 选项详细说明 curl,并且文件 si 正确生成但内部没有信息(使用控制台 php 脚本,文件详细说明) .

我尝试了另一个使用 shell_exec("curl command") 并在浏览器和控制台上很好地检索信息的 php 脚本。

有没有人遇到过这样的问题?

我留下了一些版本信息:

PHP

PHP 7.0.27 (cli) (built: Oct 29 2019 15:04:22) ( NTS )

卷曲

curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.44 zlib/1.2.7 libidn/1.28 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets

服务器

NAME="Red Hat Enterprise Linux Server"
VERSION="7.7 (Maipo)"
ID="rhel"
ID_LIKE="fedora"

标签: phpcurl

解决方案


推荐阅读