php - 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"
解决方案
推荐阅读
- javascript - 使用时刻检查字符串是否为有效日期
- android - Android:为什么即使对象为空,数据绑定也不强制 NullPointerException
- sqlite - 如何阅读 Chrome Cookie 文件?
- julia - Julia:如何获取 NamedTuple 的名称?
- excel-formula - 每次目标单元格A增加时,如何使单元格B减少?
- reference - 转换 Vec
> 到 &[&Foo] 在 Rust - swift - 如何沿 x 轴垂直旋转 CaLayer?
- ios - ld:找不到框架 Pods_MyProject_MyProjectTests
- javascript - 代理:使用代理对象时调用目标父级的静态方法
- tensorflow - protobuf 导致的 TensorFlow 检查点错误