使用PHP CURL提交GET/POST请求时,某些网站的SSL站点会报错:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104。
原因:PHP CURL的CA证书验证失败造成的。
解决办法:
一、下载CA证书
mkdir -p /usr/local/openssl/certs
cd /usr/local/openssl/certs
wget https://curl.haxx.se/ca/cacert.pem
二、编辑PHP配置文件php.ini
找到php.ini文件的正确位置,例如/etc/php/8.0/fpm/php.ini
,修改其中的;openssl.cafile=
为openssl.cafile=/usr/local/openssl/certs/cacert.pem
,注意去掉原来的注释符号“;”。
三、重启PHP服务
根据各版本的PHP不同,重启PHP服务,如:systemctl restart php8.0-fpm
再次尝试使用php curl提交GET/POST请求,报错问题解决。