这个问题表现为,一旦调用curl去获取https的网址就会爆出502的错误。起初我一直以为是openssl的配置有问题,然后花了一上午在找php5.2 openssl的patch。然并卵。。
我用这段代码测试curl的功能:
<?php
#phpinfo();die;
//初始化
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, "https://xdelve.com");
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
//打印获得的数据
print_r($output);
die;
直接命令行调试:
/website/xdelve/plug/php52/bin/php /website/userdata/site/52test.php52/index.php
而执行结果一直是 segmentation fault (core dumped)
。
上google搜了一上午,关键字是php 5.2 OpenSSL 502
,偶然在一个不起眼的搜索结果中看到了一句话:
php5.2版本的curl的加密协议不是openssl二是NSS,怎么设置?
再去对比一下phpinfo中的curl信息,果然是NSS,而之前用lnmp一键安装的里面则是OpenSSL。WTF!
。。。
带着试试看的心态,我再次google了php 5.2 curl NSS OpenSSL
的解决方案。看到了 centos curl版本nss改成openssl。看时间此文有点老了,用的curl库还是35版本的,不过这不影响结果。我按照他的方式重新安装了curl。
wget http://curl.haxx.se/download/curl-7.35.0.tar.gz
tar -zxvf curl-7.35.0.tar.gz
cd curl-7.35.0
./configure --prefix=/usr/local/curl --without-nss --with-ssl
make install
然后重新编译php5.2.17:
./configure --prefix=/website/xdelve/plug/php52 --with-config-file-path=/website/xdelve/plug/php52/etc --with-mysql --with-mysqli=/usr/bin/mysql_config --with-pdo-mysql --with-iconv==/usr/local/libiconv --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-discard-path --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl=/usr/local/curl --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --with-mime-magic
make install
这次测试代码结果总算正确了。
此坑踩得我实在吐血,究竟什么时候才可以彻底抛弃php5.2。也许这么不切实际的想法就和什么时候能彻底抛弃ie一样吧。
相关文档
暂无
随便看看
畅言模块加载中