导航:首页 > 编程语言 > php实现扩展的机制

php实现扩展的机制

发布时间:2024-10-21 11:09:44

A. 如何设置php扩展的目录

当服务器上PHP已经安装好,需要额外添加PHP扩展时怎么办?不需要重新安装PHP,有了phpize我们可以在原有的PHP基础之上直接安装扩展库。x0dx0a这次编译仅仅只是单独编译PHP的扩展库,接下来将编译好的扩展库加入到现在运行的php中,不对现在运行的php重新编译,所以没有一点的影响。x0dx0a下面我们演示安装xsl的扩展(不一定常用,仅做为一个范例)x0dx0a做法一:x0dx0a1.找到当前运行的php版本的源代码目录,如php-5.2.3。进入xsl扩展库目录。x0dx0a$cd /home/pkgs/php-5.3.3/ext/xslx0dx0a2.调用phpize程序生成编译配置文件。x0dx0a$/home/app/php5.3.3/bin/phpizex0dx0a3.编译扩展库,分别执行下面的configure和make命令。x0dx0a$./configure-with-php-config=/home/app/php5.3.3/bin/php-configx0dx0a这一步执行通过后,再执行make命令,如果configure执行不通过,则查找错误原因。x0dx0a$makex0dx0a#make成功执行后,生成的扩展库文件在当前目录的 moles子目录下,x0dx0a如/home/php-5.3.3/ext/curl/moles/xsl.sox0dx0a4.配置php.ini文件x0dx0a#将编译好的扩展库文件复制到PHP的扩展目录下,可通过查看phpinfo信息。。x0dx0a$ cp /home/pkg/php-5.3.3/ext/xsl/moles/xsl.so /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626x0dx0a#在php.ini文件中找到设置扩展目录的位置,然后将扩展路径设置到php安装目录/extension/no-debug-non....目录下,并添加扩展库位置。x0dx0aextension_dir /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626”x0dx0aextension=xsl.sox0dx0a5.重启php,查看phpinfo信息,即可看到刚才添加进去的xsl扩展库。(如果有多个php-fpm进程的话,平滑重启主进程即可:kill -USR2 pid)

B. 如何加载php扩展功能

当服务器上PHP已经安装好,需要额外添加PHP扩展时怎么办?不需要重新安装PHP,有了phpize我们可以在原有的PHP基础之上直接安装扩展库。
这次编译仅仅只是单独编译PHP的扩展库,接下来将编译好的扩展库加入到现在运行的php中,不对现在运行的php重新编译,所以没有一点的影响。

下面我们演示安装xsl的扩展(不一定常用,仅做为一个范例)
做法一:
1.找到当前运行的php版本的源代码目录,如php-5.2.3。进入xsl扩展库目录。
$cd /home/pkgs/php-5.3.3/ext/xsl

2.调用phpize程序生成编译配置文件。
$/home/app/php5.3.3/bin/phpize

3.编译扩展库,分别执薯仔岩行下面的configure和make命令。
$./configure-with-php-config=/home/app/php5.3.3/bin/php-config
这一步执行通过后,再执行make命令,如果configure执行不通过,则查找错误原因。

$make
#make成功执行后,生成的扩展库文件在当前目录的 moles子目录下,
如/home/php-5.3.3/ext/curl/moles/xsl.so

4.配置php.ini文件
#将编译好的扩展库文件复制到PHP的扩展目录下,可通过查看phpinfo信息。。
$ cp /home/pkg/php-5.3.3/ext/xsl/moles/xsl.so /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626

#在php.ini文件中找到设置扩展目录的位置,然后将扩展路径设置到php安装目录/extension/no-debug-non....目录下,并添加扩展库位置。
extension_dir /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626”
extension=xsl.so

5.重启php,查看phpinfo信息戚此,即可看到刚才添加进去的xsl扩展库。(如果有多个php-fpm进程的话,平滑重启数御主进程即可:kill -USR2 pid)

C. 如何编译安装PHP扩展

一开始安装PHP的时候,我们并不知道需要哪些扩展,所以只有等到我们真正用到的时候才想办法去安装。
安装PHP扩展最简单的办法就是
sudo apt-get install php5-xxx

但有的时候并非我们所愿,源里面并没有我们需要的扩展,这时候就需要我们下载源码自己编译安装了。
这篇文章中我将介绍在本地Linux平台下编译安装PHP扩展的方法。
现在网站根目录下创建 index.php 打印基本的配置信息,以验证我们是否安装成功。
配置编译环境
我们需要安装一些编译必须的库,还有 php-dev 版本
Ubuntu
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev

Fedora
sudo yum install php-devel php-mysqlnd gcc libtool

RHEL
sudo yum install php-devel php-mysql gcc libtool

Suse
yast2 -i php5-pear php5-devel php5-mysql gcc

安装扩展
PHP有两种可供安装的扩展:一种是PHP原生的但是默认没有安装的,另一种的第三方开发的扩展。
下面依次介绍两种扩展的安装方法:
安装之前我们需要一份和当前机器上相同版本的PHP源码
cd code
wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2
tar xvjf php-5.5.9.tar.bz2
cd php-5.5.9

前往此处 下载相应的源码包。
在 /ext 目录下面可以看到所有PHP原生的扩展。
安装原生扩展
以 PHP-intl 为例,这是PHP国际化的扩展。
为了安装这个扩展我们需要先安装ICU 库
sudo apt-get install icu-devtools icu-doc libicu-dev libicu52 libicu52-dbg

ICU 安装成功之后进入/ext/intl 目录:
cd intl
phpize
./configure --enable-intl
make
sudo make install

下面解释一下上面的每个命令:
phpize : 是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块
./configure --enable-intl: 配置编译环境,相当于告诉编译器编译PHP源码的时候加上intl这个扩展。
make: 将会把源码编译成 intl.so
make install : 将会把 intl.so 移动到当前安装的 PHP 的扩展目录。
接下来我们要做的就是在php.ini中启用这个扩展,这一步将会在最后给出示例。
安装第三方扩展
将以这个 扩展为例,这个扩展主要实现了PHP识别条形码的功能。
先安装必要的依赖
sudo apt-get install pkg-config

git clone https://github.com/mongodb/mongo-php-driver
cd mongo-php-driver
phpize
./configure
make
sudo make install

将会生成一个文件,将其拷贝到PHP的扩展目录下面。
启用扩展
在php.ini中启用扩展的方式有很多:
直接在php.ini文件中添加 extension=mongo.so,这是最简单直接的方法。
也可以单独建一个ini文件,然后在php.ini中包含这些文件就可以了。
下面介绍一下第二种方法:
cd `/etc/php5/mods-available`

这个目录里可以放新建的ini文件,然后执行
sudo touch mongo.ini
echo "extension=mongo.so" | sudo tee -a mongo.ini
sudo touch intl.ini
echo "extension=intl.so" | sudo tee -a intl.ini

上面的命令将会创建ini文件,并且写如相应的配置信息。
然后执行下面的命令启用扩展即可(需要安装 php5enmod 工具):
sudo php5enmod mongo
sudo php5enmod intl

如果未安装 php5enmod 工具,则需要手动配置:
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/cli/conf.d/intl.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/fpm/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/fpm/conf.d/intl.ini

最后在执行一下重启操作就可以了:
sudo service nginx restart
sudo service php5-fpm restart

阅读全文

与php实现扩展的机制相关的资料

热点内容
惠利app是什么 浏览:779
游戏端口读取服务器失败怎么弄 浏览:878
linux修复mbr 浏览:128
磁盘格式化基本命令 浏览:578
程序员掉入异世界 浏览:954
andlua画质助手源码 浏览:577
winrar解压格式怎么看 浏览:147
qt编程入门pdf 浏览:599
php中是根据指针查的数据吗 浏览:276
安卓手机驱动为什么不能提取通用 浏览:708
转行程序员失败的人 浏览:728
延迟命令方块 浏览:499
某视频网站为什么安卓可以投屏 浏览:651
服务器解释器在哪个文件夹 浏览:95
app督促服务在哪里 浏览:992
命令与征服3语音 浏览:999
用纸片和怎么才能做一个解压球 浏览:476
vim显示命令 浏览:294
程序员给老婆送手机 浏览:84
胖子程序员视频 浏览:142