php扩展so
一开始安装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怎么打开socket扩展
pup:找相同版本的php源码,再编译。
linux下
:#cd /home/php/ext/sockets
#/server/php/bin/phpize
#./configure --prefix=/usr/local/php/lib --with-php-config=/server/php/bin/php-config --enable-sockets
#make
#make install
再修改/usr/local/php/etc/php.ini文件
#extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/" (php5.4版本以上不用加扩展路径)
extension=sockets.so
重启apache或者nginx等进程,完成。
㈢ 宝塔php 如何添加自定义so扩展,怎么添加,怎么调用
和php安装扩展一样,也是要在命令行操作,步骤如下:
进入源码目录:
cd xxx
生成配置
/www/server/php/版本/bin/phpize
./configure --with-php-config=/www/server/php/版本/bin/php-config
编译并安装:
make && make install
写配置文件
echo "extension = xxx.so" >> /www/server/php/版本/etc/php.ini
㈣ 什么是php扩展,从原理方面解释,详细一点
就是按照一定规则编写的一些的函数库,在WINDOWS是DLL文件,在UNIX下是SO文件,这些库能让PHP环境下的程序多出一些可以调用的函数,完成特定的功能。
比如MYSQL扩展多了mysql_*函数,可以连接MYSQL数据库、进行数据检索等操作。
㈤ 如何获取php扩展库源代码包
您需要告诉构建系统在编译时链接到共享库。这允许依赖项存储在已编译的PHP扩展中,在第一次使用时将加载它。
为此,您需要修改config.m4以添加库。你可以通过PHP_ADD_LIBRARY宏来做到这一点。此宏将一个库添加到链接行并具有该表单PHP_ADD_LIBRARY($name,$append,$var)。第一个参数是库的名称; 这是*.so没有lib前缀的文件的名称(例如xxx)。第二个参数确定(我推测)是否附加或覆盖该行; 这应该通常设置为1。最后一个参数是存储该行的变量名称。必须将此变量替换为输出文件PHP_SUBST。
您应该将PHP_ADD_LIBRARY行放在文件中PHP_NEW_EXTENSION宏之前的某个位置config.m4。另外,PHP_ADD_LIBRARY在PHP_CHECK_LIBRARY电话中打包是个好主意。这可确保构建系统在添加库之前找到库。请参阅下面的示例。
这是另一个类似于你的SO问题。它有一些你可以遵循的工作实例。另外,我将在这里包含一个简单示例:
PHP_CHECK_LIBRARY(xxx,xxxfunction,[
PHP_ADD_LIBRARY(xxx,1,XXX_SHARED_LIBADD)],[
AC_MSG_ERROR([])],[])PHP_SUBST([XXX_SHARED_LIBADD])
注意:第二个参数PHP_CHECK_LIBRARY是一个函数,构建系统将检查它是否找到给定的库。
㈥ PHP的扩展模块怎么添加
在PHP/etc 文件夹中加入扩展
在PHP 文件夹下的php.ini文件里 有很多dll文件的地方加入一行 你所添加的扩展的名字xxxx.dll
或者 是 在php.ini中直接打开对应的扩展 ,将目标行的 ; 给去掉
哦,对了,最后记得要重新启动PHP的服务器
㈦ php是如何加载扩展的
不会没有加载的。你可以用grep -ril xdebug.so . 来搜索一下。
如何配置的话,你在php.ini 就可以配置xdebug的参数了。当然,你也可以找到加载的那个ini文件,在那个文件中添加配置。
㈧ php 怎么安装扩展
在windows平台上,主要是三个步骤:
1、下载php扩展库文件;
一般在http://pecl.php.net/上就有下载信息。
2、解压缩文件,将*.dll文件复制到PHP程序主目录下的“ext”或者“extension”目录。
3、打开php.ini文件,在“Dynamic Extensions”配置段中加上“extension=*.dll”,关闭文件,重新启动一下服务器就可以加载成功了。