为PHP增加OpenSSL扩展

2017年5月9日

11:42

为PHP增加OpenSSL扩展

2014-05-26 23:32:26

以前的php不带openssl模块,而这次的程序要使用苹果apple的apns推送服务,需要openssl的支持。 所以就给原来的php增加了openssl模块。

近日,将一个web程序上传到服务器,这个程序有一个苹果apns推送服务的模块,

结果在推送消息的时候出现如下的错误信息:

unable to connect to ssl://gateway.sandbox.push.apple.com:2195

(Unable to find the socket transport ssl -

did you forget to enable it when you configured PHP?

错误消息很明确了,说是程序不支持SSL,可能是php没有开启openssl扩展。

服务器是一台较老的服务器,centos系统,

1、首先看一下是不是php没有开启openssl扩展

有两种方式,一种是通过 phpinfo() 函数,看看是否有openssl模块

如果有openssl模块的话,通常会看到如下图所示的信息

另外一种方式是,在服务器上直接通过php命令查看,php有个参数 -m ,就是显示php已经编译过的所有的模块,

[hutuseng@web101 bin]$ ./php -m|grep openssl

openssl

2、下载相应版本的php源码

首先,看看php是什么版本的,我们好去找相应版本的php源代码,当然如果你服务器上已经有源码了,就不用重新下载。下载之前,先确定一下php的版本,方法同上,可以通过phpinfo()查看,也可以通过 php -v命令查看

[hutuseng@web101 bin]$ ./php -v

PHP 5.3.6 (cli) (built: May 13 2011 02:06:43)

Copyright (c) 1997-2011 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator

确定了版本,就可以到网上下载相应版本的源码了

wget http://museum.php.net/php5/php-5.3.6.tar.gz

解压到某个目录中

tar zxvf php-5.3.6.tar.gz

3、重新把openssl扩展编译到php中

wget http://museum.php.net/php5/php-5.3.6.tar.gz

tar zxvf php-5.3.6.tar.gz

cd php-5.3.6

cd ext/

cd openssl/

cp config0.m4 config.m4

/usr/local/php/bin/phpize

./configure —with-php-config=/usr/local/php/bin/php-config —with-openssl

make

make install

vi /usr/local/php/lib/php.ini

在php.ini中增加 openssl.so的扩展

; Directory in which the loadable extensions (modules) reside.

; http://php.net/extension-dir

; extension_dir = ”./”

; On windows:

; extension_dir = “ext”

extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/”

extension = “pdo_mysql.so”

extension = “openssl.so”

重启apache服务

/usr/local/apache/bin/apachectl -k restart

PHP添加扩展的步骤都差不多,可以参考以前的一篇文章《为PHP添加PDO-mysql驱动

来自 <http://www.hutuseng.com/article/php-install-openssl-module>

#apache #mysql #php #ssl-tls