设为首页 收藏本站
查看: 435|回复: 0

[经验分享] Linux为已编译好PHP添加 Mysql(PHP编译好后添加Mysql扩展)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-15 10:22:43 | 显示全部楼层 |阅读模式
问题背景:
    正常情况下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# /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  <<— 安装方法不同,重启办法不同。



    wKiom1UsufSAZ5zUAAKqLzg6WM4816.jpg

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

测试PHP 工作是否正常:  
1
2
3
         phpinfo();
    ?>




测试 PHP 连接Mysql 是否正常:
1
2
3
4
5
6
$link=mysql_connect('127.0.0.1','root','123456');
if(!$link) echo "connect error!";
else echo "connected!";
mysql_close();
?>



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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-57379-1-1.html 上篇帖子: mysqldump实现数据备份及灾难恢复 下篇帖子: MySQL5.6一主多从的半同步复制实例 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表