linux下为已经编译好的php环境添加mysql扩展(php安装完成后如何添加mysql扩展)
问题背景
平常我们都是先安装mysql,然后才能去安装php。假如先安装php,后安装mysql,由于php需要连接mysql,因而在php引擎中需要配置使用mysql.so扩展。这时需要手动编译生成mysql.so扩展。
解决方案
使用phpize工具能够生成mysql.so,但是必须加上"--with-mysql=mysql客户端的路径"。也就是mysql.so模块必须用到mysql客户端才行。
可以这样理解,mysql.so内部会调用mysql客户端,以便实现连接mysql数据库服务器。
我们常常用到的mysql_connect()可能就是调用了mysql客户端才能完成连接数据库的操作。
实践生成mysql.so的过程
大体思路:需要用到php的源码包才行。通过源码包中提供的phpize文件(一个专门挂接php扩展的工具),phpize的规则:去哪个目录下运行phpize文件,那么就会在该目录下生成一个configure文件。
具体的安装步骤如下
php安装完成后添加mysql扩展基本步骤如下:
1、进入php源代码目录:
[root@localhost /]# # cd cd /usr/local/php-5.3.28 2、再进入要添加的mysql扩展源码目录:
[root@localhost php-5.3.28]cd ext/mysql/
[root@localhost mysql]# yum install autoconf (CentOS 5.4需安装) 3、调用已经编译好的php可执行程序phpize:
[root@localhost mysql] /usr/local/php/bin/phpize 4、然后configure:
[root@localhost mysql]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/local/mysql/ --with-zlib-dir=/usr/local/lib
注意:
/usr/local/mysql 为mysql的安装目录
/usr/local/lib/php/extensions/no-debug-non-zts-20090626/ 为php扩展的动态库存放目录 5、编译安装
[root@localhost mysql]#make
[root@localhost mysql]#make install 6、编译完成之后,将会自动把mysql.so放到了默认的php扩展目录下(phpinfo可查看,我的为 /usr/local/php/lib/php/extensions/no-debug-zts-20090626),再修改php.ini,去掉;extension=mysql.so前面的分号。如果没有这句,需要自行添加。
不过有一点需要注意的是,生成的模块名叫mysql.so,跟php.ini里面的php_mysql.so名字不一致,必须把mysql.so改名为php_mysql.so,也可修改php.ini中的文件名,总之文件名必须一致. 7、重启apache:
[root@localhost mysql] service httpd restart
或者apache没有安装成服务,则进入apache_home执行
[root@localhost mysql]bin/apachectl -k restart
测试php引擎是否成功加载该扩展
编写文件phpinfo.php,内容是:
<?php
ehco phpinfo();
?> 运行后,可以看到有如下信息显示: mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 5.1.55
MYSQL_MODULE_TYPE no value
MYSQL_SOCKET /tmp/mysql.sock
MYSQL_INCLUDE no value
MYSQL_LIBS no value
通过这样的方式可以确认,php引擎已经成功加载了mysql.so扩展。
已经生成的mysql.so。编写php代码测试是否能连接mysql
测试.so是否能用变得非常必要。现在测试一下生成的mysql.so是否能用。
<?php
$link=mysql_connect('192.168.150.214','root','123456');
if(!$link) echo "connect error!";
else echo "connected!";
mysql_close();
?>
运行后,输出connected 说明连接成功!!!
linux下为已经编译好的php环境添加mysql扩展(php安装完成后如何添加mysql扩展)的更多相关文章
- Linux下指定版本编译安装LAMP
说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...
- Linux下使用javac编译
Linux下使用javac编译Hadoop程序 首先要配置好Hadoop, 给出两个教程 Hadoop安装教程单机/伪分布式配置Hadoop2.6.0/Ubuntu14.04 Hadoop集群安装配置 ...
- Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用(jenkins自动化部署)【转】
jenkins自动化部署 目标:jenkins上点构建(也可以自动检查代码变化自动构建)>>>项目部署完成. 一.安装jenkins 1.下载jenkins 这里我选择的是war包安 ...
- Linux下使用NDK编译FFMPEG(libstagefright)
这个月要负责一个项目,使用FFMPEG渲染视频,主要是Android端的,由于性能要求,要使用硬解码,但网上大多数教程都是没有libstagefright的,所以个人觉得,生成的so库文件也是没有开启 ...
- 在ubunt14.04(linux)下利用cmake编译运行opencv程序
今天在电脑上安装好了opencv环境,迫不及待的想写个程序来测试一下.但是在windows下我们用vs等集成开发工具.可是在linux下我们应该怎么办呢? 这里我们用了opencv推荐的cmake来编 ...
- Linux下php5.3编译oracle客户端
因项目需要在linux下进行php5.3的oracle客户端编译,简要介绍一下步骤及走过的弯路. 1.下载Oracle客户端程序包,其中包含OCI.OCCI和JDBC-OCI等相关文件. 1.1下载文 ...
- Linux下源码编译安装rpy2
R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现工具.rpy2是Python直接调用R的第三方库,它可以实现使用python读取R的对象.调用R的方法以及Python与R数据结构转换等.这 ...
- 在Linux下使用gcc编译mesa文件报undefined reference to symbol 'sin@@GLIBC_2.2.5和DSO missing from command line两个错误的解决方案
一.概述 在Linux系统下使用gcc编译用C语言写的mesa的示例程序. 环境:Ubuntu Server 18.04.1 二.问题的出现 在Ubuntu下安装好mesa所需的库文件,将目标文件从g ...
- Linux下编辑、编译、调试命令总结——gcc和gdb描述
GCC gcc是linux系统集成的编译器.在linux环境下编辑程序,首先需要克服的便是没有集成开发环境的一键式操作所带来的麻烦.这其中涉及命令行操作.编译选项的设定.文件依赖关系的书写(makef ...
随机推荐
- tensorflow-2.0 技巧 | ImageNet 归一化
_MEAN_RGB = [123.15, 115.90, 103.06] def _preprocess_subtract_imagenet_mean(inputs): ""&qu ...
- linxu passwd 给linux用户设置密码 命令
[root@localhost ~]# passwd # 修改 root 用户的密码 passwd 给linux用户设置密码 命令 passwd www 直接passwd是当前用户设置密码 非交互式修 ...
- ICPC Asia Nanning 2017 F. The Chosen One (大数、规律、2的k次幂)
Welcome to the 2017 ACM-ICPC Asia Nanning Regional Contest.Here is a breaking news. Now you have a c ...
- poj1284(欧拉函数+原根)
题目链接:https://vjudge.net/problem/POJ-1284 题意:给定奇素数p,求x的个数,x为满足{(xi mod p)|1<=i<=p-1}={1,2,...,p ...
- Solr 4.4.0增加core
假设现在我们现在需要增加一个新的core名称为"core1" 1. 在solr_home目录新建目录core1 $ mkdir /usr/local/contentplatform ...
- Spring Cloud 使用Feign调用服务传递Header中的参数
1.使用Feign 调用其他微服务,尤其是在多级调用的同时,需要将一些共同的参数传递至下一个服务,如:token.比较方便的做法是放在请求头中,在Feign调用的同时自动将参数放到restTempla ...
- 小记---------idea新手操作
加载jar包 file---project structrue ---modules---dependencies---- 点+号 选择idea软件的位置的lib 添加自带的jar包,or ...
- Java中的模板设计模式,太实用了!
顾名思义,模板设计模式就是将许多公用的常用的代码封装成一个模板,我们只需要实现不同的业务需求的代码,然后和模板组合在一起,那么就得到完整的逻辑. 在我们的日常开发中,常用的模板模式有两种实现方式:继承 ...
- 20 亿的 URL 集合,如何快速判断其中一个?
假设遇到这样一个问题:一个网站有 20 亿 url 存在一个黑名单中,这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中?并且需在给定内存空间(比如:500M ...
- Django查询数据库返回字典dict数据
个人观点: 个人认为,在Django项目中, 开发团队为了让使用该框架的用户都使用自带的序列化功能,从而让框架中的SQL返回值很不直观,对于直接使用SQL语句的用户很犯难. 解决: from djan ...