03月17, 2017

整理一些不同环境下PHP扩展的安装问题

一、PHP中PDO_MYSQL扩展安装的2种方法

部署测试系统:ubuntu /centos6.0+(仅限Linux/Unix参考)

查看扩展支持是否安装:

php -i|grep PDO

显示如下:

PDO
PDO support => enabled
PDO drivers => mysql
PDO Driver for MySQL => enabled

方法1: 下载安装。首先是下载pdo_mysql扩展的源码包,http://pecl.php.net/package/PDO_MYSQL , 服务器端下载:

# wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

然后是解压缩,

# tar -zxvf PDO_MYSQL-1.0.2.tgz

进入解压后的目录,然后执行phpize(PHP安装目录)。

# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525

下面生成makefile。后面的两个参数必须要添加,一开始我没有添加,结果分别都提示找不到php-config和mysql的header文件。

# ./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql

参数说明:

--with-php-config=/usr/local/php/bin/php-config 指定安装PHP的时候的配置
--with-pdo-MySQL=/usr/local/mysql/ 指定MySQL数据库的安装目录位置

在make之前做一个mysql的header文件的软连接。因为mysql安装的时候指定了目录,不做软连接的话,还是找不到header文件。

# ln -s /usr/local/mysql/include/* /usr/local/include/

[注]:ubuntu mysql判断自己的库和头文件的位置,如下命令

mysql_config --cflags --libs

~~~

然后make和make install。

# make
# make install

之后会提示如下,意思是扩展被安装到了如下目录里。

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

当前系统环境PHP扩展统一在extensions目录下,所以把生成的so放入该目录下:

# mv /usr/local/php/lib/php/extensions/no-debug-zts-20100525/pdo_mysql.so /usr/local/php/lib/php/extensions/

然后修改php.ini文件

找到; extension_dir = “./”这一行,去掉注释,并修改路径。

extension_dir = “/usr/local/php/lib/php/extensions/”

找到; extension=php_pdo_mysql.dll这一行,去掉注释,并修改后面的文件名。

extension=pdo_mysql.so

此处注意扩展文件名,去掉前缀php_,否则找不到文件。后面的dll是windows下的文件名,这里改成so。

最后重启apache/nginx,用phpinfo()查看是否生效。

本文链接:https://baboben.com/post/phpext.html