标签为 "openssl" 的存档

cygwin 添加php扩展模块

以添加openssl模块为例子

进入源码目录

cd php-5.2.13/ext/openssl
#运行phpize生成configure

/usr/local/php/bin/phpize

#编译,指定php-config,注意这里的php-config,不是php.ini

./configure –with-php-config=/usr/local/php/bin/php-config
#上面可以添加–enable-openssl,也可以不用添加

#编译安装

make;make install

#生成一个目录来存放扩展的模块

mkdir /usr/local/php/etc/php/ext

#复制openssl.so到模块目录

cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/openssl.so /usr/local/php/etc/ext/

#编辑php.ini文件,指定PHP到哪个目录读模块

vi /usr/local/php/etc/php.ini

extension_dir=”/usr/local/php/etc/ext”
#Load模块
extension=openssl.so
#保存退出

再用/usr/local/php/bin/php -m|grep openssl查看是否有openssl.so

备注:
如果在运行phpize时报错:Cannot find autoconf. Please check your autoconf installation:
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

是由于未安装m4和autoconf造成的,请打开cygwin安装程序,选择m4 和 autoconf模块进行安装:
另:在./configure时报错:Cannot find OpenSSL’s ,是由于cygwin未安装openssl包,需要同样打开cygwin安装程序,选择openssl-devel进行安装即可。

windows下php_curl获取https内容

在搞一个新浪微博小应用,在本地搞的开发环境,win7 旗舰版 64位。
当使用php_curl curl_init() curl_exec()时候,发现当访问接口文件 https://api.weibo.com/oauth2/access_token 要进行登陆认证时,返回结果为false,没有抓取到内容。但是访问http的内容时是正常的,但是openssl也是打开的啊,应该是可以的。
找了半天问题,后来仔细想了一下,认为可能是打开ssl内容时的证书验证问题,于是, 在curl里加入了如下参数,取消证书检验:

        $ch = curl_init();

        curl_setopt($ch,CURLOPT_TIMEOUT,$second);

        curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($ch,CURLOPT_URL,$url);
       
         //取消证书检验
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        
        curl_setopt($ch,CURLOPT_POST, 1);

        curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
        
        $data = curl_exec($ch);

        curl_close($ch);

Read more…