方法1:

方法1:

curl_exec()每当我使用“https://”URL 从 PHP调用时,我的 Apache 进程就会出现段错误。

如果我使用http而不是https作为 URL 传输,它可以完美运行,所以我知道 curl 和其他 curl 选项是正确的。

我可以使用 URL 的版本curl在该服务器上的命令行中使用它https,并且它运行完美,所以我知道远程服务器响应正确,证书没有过期,等等。

我的服务器是:

Linux 2.6.32-21-server #32-Ubuntu SMP Fri Apr 16 09:17:34 UTC 2010 x86_64 GNU/Linux

我的 Apache 版本是:

Server version: Apache/2.2.14 (Ubuntu)
Server built:   Apr 13 2010 20:21:26

我的PHP版本是:

PHP 5.3.2-1ubuntu4.2 with Suhosin-Patch (cli) (built: May 13 2010 20:03:45) 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

我的 PHP curl 模块信息是:

cURL support => enabled
cURL Information => 7.19.7
Age => 3
Features
AsynchDNS => No
Debug => No
GSS-Negotiate => Yes
IDN => Yes
IPv6 => Yes
Largefile => Yes
NTLM => Yes
SPNEGO => No
SSL => Yes
SSPI => No
krb4 => No
libz => Yes
CharConv => No
Protocols => tftp, ftp, telnet, dict, ldap, ldaps, http, file, https, ftps
Host => x86_64-pc-linux-gnu
SSL Version => OpenSSL/0.9.8k
ZLib Version => 1.2.3.3

答案1

方法1:

您可以尝试手动构建 curl 最新版本 7.49.1,然后将软链接更改为旧版 curl,通常它位于 /usr/bin/curl 和 curl-config。然后将 lib 修复到 /etc/ld.conf.d/local.conf 并运行命令“ldconfig”

方法2:

首先,curl/libcurl 的标准 CentOS 6 版本足够新,因此您不需要旧的兼容软件包(libcurl7155 等)。

从我的 repo 安装更新的 curl 的最简单方法是安装我的 repo 发布包http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-1-13.rhel6.noarch.rpm

转速http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-1-13.rhel6.noarch.rpm

然后编辑文件 /etc/yum.repos.d/city-fan.org.repo,将行 enabled=1 更改为 enabled=0,以防止在您不希望的时候从那里提取任何内容。

然后,您可以看到如果通过以下方式从我的仓库更新 curl 会发生什么:yum --enablerepo=city-fan.org update curl

此时,您可以看到将安装/删除的内容(我希望它会安装/更新一些库以及 curl 和 libcurl,而不是删除任何内容),并对更新说“是”或“否”。更新后的 curl 版本应该可以与 CentOS 6 中的所有东西配合使用。

我确实这样做了,重新启动 Apache 后,我很高兴地说 PHP 现在也在使用新版本。

答案2

考虑添加以下内容:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

现在,为了看看发生了什么,使用var_dump()或者错误日志()。它应该是这样的:

var_dump(curl_exec($ch));

或者

error_log(curl_exec($ch));

如果您使用,error_log()您应该在 error_log 文件中找到跟踪。

如果失败了你别无选择,只能使用 strace

答案3

对我来说,可以使用各种 PHP curl 选项curl_setopt()过去曾帮助过我。尝试改变CURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOST首先,为错误。

相关内容