问题背景:

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

    Linux —> Apache —> Mysql —> PHP  

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


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


    wKiom1UsrueDnW99AADStwWroGw612.jpg




解决方案:

使用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    <— Ubuntu 安装方法

    root@localhost:/# yum install autoconf      <— Centos 安装方法


安装步骤:

    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    <<<— 此处大约在 944 行左右;


      6、重启 Apache:

        /usr/local/apache/bin/apachectl  restart  <<— 安装方法不同,重启办法不同。



    Linux为已编译好PHP添加 Mysql(PHP编译好后添加Mysql扩展)_第1张图片


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

 

测试PHP 工作是否正常:  

 


测试 PHP 连接Mysql 是否正常:

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