php编译mysql_Linux为已编译好PHP添加 Mysql(PHP编译好后添加Mysql扩展)

问题背景:

正常情况下LAMP安装次序为:

Linux —> Apache —> Mysql —> PHP

PHP 如果想连接Mysql 在编译时就需要用到 Mysql的头文件以及库文件。

PHP连接 Mysql 时需要在 PHP 引擎中使用Mysql.so扩展,此时先安装的PHP,在编译PHP时,Mysql还没有被安装,所以此时就需要手动编译生成 mysql.so 扩展;

3fea1aa06b2926a816c918551f96db81.png

解决方案:

使用phpize工具能够生成mysql.so,但是必须加上"--with-mysql=mysql客户端的路径"。也就是mysql.so模块必须用到mysql客户端才行。

可以这样理解,mysql.so内部会调用mysql客户端,以便实现连接mysql数据库服务器。

我们常常用到的mysql_connect()可能就是调用了mysql客户端才能完成连接数据库的操作。

生成 mysql.so 过程:

需要用到php的源码包,通过源码包中提供的phpize文件(一个专门链接php扩展的工具)

phpize的规则:在哪个目录下使用 phpize 工具,就会在哪个目录中生成configure文件。

注:需要安装 autoconf 工具;

root@localhost:/# apt-get install autoconf    

root@localhost:/# yum install autoconf      

安装步骤:

1、进入PHP源代码目录

root@localhost:/# cd /root/php-5.3.27/

2、进入扩展目录

root@localhost:~/php-5.3.27# cd ext/mysql

3、调用已经编译好的php可执行程序 phpize 生成 configure文件:

root@localhost:~/php-5.3.27/ext/mysql

root@localhost: /usr/local/php/bin/phpize

### 此命令执行后会在 /root/php-5.3.27/ext/mysql/ 下生成 configure 文件      ### Cannot find autoconf. Please check your autoconf installation and the

### $PHP_AUTOCONF environment variable. Then, rerun this script.

### 出现此处错误即代表没有安装 autoconf 工具,按上面方法安装即可;

4、执行编译命令:

./configure --with-php-config=/usr/local/php/bin/php-config \

--with-mysql=/usr/include/mysql --with-zlib-dir=/usr/lib/mysql

## Ubuntu 中需要单独安装头与库文件 apt-get install libmysqlclient-dev

注:--with-mysql 用来指定mysql 头文件位置;

--with-zlib-dir 用来指定 Mysql 库文件位置;

make && make install

编译成功后会输出一个目录:

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

## 此目录为 php 扩展动态库存放目录,编译成功后会将 mysql.so 放到此目录中;

5、修改 PHP 配置文件:

注意:刚刚生成的模块名字叫 mysql.so(可进入扩展目录中用 ls 查看),而 php.ini 此配置文件中默认叫 msql.so ,必须更改php配置文件让配置文件中所指的模块名与生成的模块同名;

vim /etc/php/php.d/php.ini

extension=mysql.so    <<

6、重启 Apache:

/usr/local/apache/bin/apachectl  restart  <

6e40412329686446a61f6454fcdf28db.png

最后附上两段 php 检测代码:

测试PHP 工作是否正常:<?php

phpinfo();

?>

测试 PHP 连接Mysql 是否正常:<?php

$link=mysql_connect('127.0.0.1','root','123456');

if(!$link) echo "connect error!";

else echo "connected!";

mysql_close();

?>

### 成功则会输出 "connected!",失败会输出 "connect error!";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值