单个编译php模块

2016/06/01 php

PHP Fatal error: Call to undefined function mysql_connect(); 在使用中出现了这个问题,查看了一下phpinfo发现没有mysql扩展。 步骤如下: 1 进入php的安装目录 cd 到ext/mysql /usr/local/bin/phpize ./configure –with-php-config=/usr/local/bin/php-config –with-mysql=/usr/local/mysql/ make make install 在mysql/modules下看到了mysql.so 2 修改php.ini 添加extensions = “mysql.so” 3 将mysql.so拷贝到extension_dir目录下,extension_dir在php.ini中设置 4重启apache就可以了。

==============================================================

正在运行的php上增加mysqli扩展,基本方法与加载其他扩展一样,就是不用再单独下载扩展包了,php安装包里就自带,找到你当前php运行的版本,我的是php-5.2.10,具体方法如下:

tar -zxf php-5.2.10.tar.gz cd php-5.2.10/ext/mysqli /usr/local/php/bin/phpize ##生成configur文件 ./configure –with-php-config=/usr/local/php/bin/php-config –with-mysqli=/usr/local/mysql/bin/mysql_config ##这里可能会不一样,根据你php和mysql的安装路径而定。 make make install ##完成后有以串路径,把他复制下来,一会要用,我的返回是/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613

vi /usr/local/php/lib/php.ini ##php.ini这里可能也会不一样,有的会在/usr/local/php/etc下,也有在/etc下的。

在最后一行加入如下字段 extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/mysqli.so

其中mysqli.so前边的路径就是make install后返回的路径

重启php服务或是apache服务,我这里是apache /etc/init.d/httpd restart

=================================================================

具体的安装步骤如下 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目录在/usr/local/php5目录下; apache在/usr/local/apache2目录下; php源代码在/home/kevin125/src目录下。

如果实际目录与假定的目录不一致,则在下面的命令中做调整。

  1. 找到当前运行的php版本的源代码目录,如 php-5.2.10。

进入curl扩展库目录。 $cd /home/kevin125/src/php-5.2.10/ext/curl

  1. 调用phpize程序生成编译配置文件。 $/usr/local/php5/bin/phpize

  2. 编译扩展库,分别执行下面的configure和make命令。 $./configure –with-php-config=/usr/local/php5/bin/php-config

configure这一步执行通过后,再执行make命令,如果configure执行不通过,则查找错误原因。 $make

make成功执行后,生成的扩展库文件在当前目录的 modules 子目录下,如 /home/kevin125/src/php-5.2.10/ext/curl/modules/curl.so

  1. 配置php.ini文件 将编译好的扩展库文件复制到apache2 modules目录下。 $cp /home/kevin125/src/php-5.2.10/ext/curl/modules/curl.so /usr/local/apache2/modules/

找到php.ini文件所在目录位置,然后编辑。可以通过查看phpinfo信息来确定php.ini文件位置。 在php.ini文件中找到设置扩展目录的位置,然后将扩展路径设置到apache2 modules目录下 extension_dir = “/usr/local/apache2/modules/”

在php.ini的设置扩展库位置,设置要添加的扩展库。 extension=curl.so

以后如果还要添加别的扩展库的话,则只需先将php扩展库编译好,然后copy到apache2 modules目录下, 然后再在这个位置,另取一行将编译后的扩展库文件名加上即可

  1. 重启apache,查看phpinfo信息,即可看到刚才添加进去的curl扩展库。

添加其他模块类似。

./configure –enable-memcache –with-php-config=/usr/local/php/bin/php-config

Good Lucky!. ==========================编译GD================

记得make clean

make clean phpize–clean

sudo yum install php-gd2 png jpeg freetype //YUM安装扩展 cd /app/php-5.4.13/ext/gd //这里的php-5.4.13/文件夹是我当初解压PHP安装包得到的。 phpize ./configure –with-png-dir –with-freetype-dir=/usr/include/freetype2/ –with-jpeg-dir –with-gd –enable-gd-native-ttf sudo make make install

sudo vi /app/php5/etc/php.ini //修改PHP配置文件 extension=gd.so //添加这一行,重启PHP服务

==============

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


Search

    Table of Contents