一些扩展都是php自带的,开启即可
如果不是自带的,要先安装,配置里加上此扩展,在开启
‘贰’ linux编译安装php扩展出错
1. 下载你要安装的软件包,解压得到目录(如:phpredis)
2. 进入软件包目录(cd phpredis)
3. 执行phpsize命令(/usr/local/php/bin/phpize)
成功后,当前目录将得到configure文件。
4. 进行配置(./configure --with-php-config=/usr/local/php/bin/php-config#指定安装在哪个PHP)
‘叁’ 如何在编译好的PHP环境中安装PHP扩展模块
1、先进入php解压缩后的源码包中,找到要安装的扩展模块的目录。
[root@redhat5 sockets]# cd /home/soft/php-5.2.12/ext/sockets
在sockets目录下面以绝对路径运行phpize程序,这时会自动生成sockets的configure程序,在sockets目录下面可以看到。
[root@redhat5 sockets]# /home/webserver/php5.2.12/bin/phpize
2、进行编译安装
[root@redhat5 sockets]# ./configure --with-php-config=/home/webserver/php5.2.12/bin/php-config
[root@redhat5 sockets]#make
[root@redhat5 sockets]#make install
执行完make install屏幕上会提示sockets.so存放的路径,然后把它复制到php的extensions目录中,例如我的路径为 /home/webserver/php5.2.12/lib/php/extensions
3、修改php.ini文件
找到extension_dir = "./" 这行,修改为:
extension_dir = "/home/webserver/php5.2.12/lib/php/extensions/"
然后再新增加一行:
extension=sockets.so
4、重启apache即可生效。
‘肆’ 如何编译安装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
‘伍’ Mac OS 下如何编译自己的PHP扩展
为了扩展管理方便,首先来安装pecl扩展管理器:
cd /usr/lib/php
sudo php install-pear-nozlib.phar
安装Redis、Memcache、Mongo等扩展。
sudo pecl install redis
sudo pecl install memcache
sudo pecl install mongo
sudo pecl install xdebug
将扩展配置添加的php.ini文件中:
extension=memcache.so
extension=mongo.so
extension=redis.so
zend_extension=xdebug.so
安装xcache,从官网下载Release-3.2.0解压缩并安装
tar xvf xcache-3.2.0.tar
cd xcache-3.2.0
phpize
/configure
make
sudo make install
配置XCache
[xcache]
xcache.size = 128M
xcache.var_size = 8M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.optimizer = Off
由于Mac自带的PHP环境是不包括mcrypt扩展的,所以需要下载同版本的php源码包,单独编译这个模块加载。从官网的归档里面找到php5.5.14的源码包,下载:http://php.net/releases/
tar zxvf php-5.5.14.tar.gz
cd php-5.5.14/ext/mcrypt/
phpize
。/configure
make
sudo make install
配置ext-mcrypt
extension=mcrypt.so
为了加速,还需要打开opcache。
zend_extension=opcache.so
[opcache]
; Determines if Zend OPCache is enabled
opcache.enable=0
; Determines if Zend OPCache is enabled for the CLI version of PHP
opcache.enable_cli=0
‘陆’ 如何安装php的扩展bcmath
方法如下
talk is cheap,show me the code:
[root@LAMP1 lib]# php -vPHP 5.3.3 (cli) (built: Oct 30 2014 20:12:53)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
[root@LAMP1 lib]# yum install php-bcmathLoaded plugins: fastestmirror, presto
Loading mirror speeds from cached hostfile
* base: mirrors.pubyun.com
* extras: mirrors.pubyun.com
* updates: mirrors.pubyun.com
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package php-bcmath.x86_64 0:5.3.3-40.el6_6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================================================================================================
Package Arch Version Repository Size
==============================================================================================================================================================================================
Installing:
php-bcmath x86_64 5.3.3-40.el6_6 updates 37 k
Transaction Summary
==============================================================================================================================================================================================
Install 1 Package(s)
Total download size: 37 k
Installed size: 29 k
Is this ok [y/N]: y
Downloading Packages:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 37 k
php-bcmath-5.3.3-40.el6_6.x86_64.rpm | 37 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : php-bcmath-5.3.3-40.el6_6.x86_64 1/1
Verifying : php-bcmath-5.3.3-40.el6_6.x86_64 1/1 Installed:
php-bcmath.x86_64 0:5.3.3-40.el6_6
Complete!
[root@LAMP1 lib]# ps -ef|grep httpdroot 1780 1 0 Mar10 ? 00:03:02 /usr/sbin/httpd
apache 2510 1780 0 11:53 ? 00:00:00 /usr/sbin/httpd
apache 2511 1780 0 11:53 ? 00:00:00 /usr/sbin/httpd
apache 2512 1780 0 11:53 ? 00:00:00 /usr/sbin/httpd
apache 2513 1780 0 11:53 ? 00:00:00 /usr/sbin/httpd
apache 2514 1780 0 11:53 ? 00:00:00 /usr/sbin/httpd
apache 2515 1780 0 11:53 ? 00:00:00 /usr/sbin/httpd
apache 2516 1780 0 11:53 ? 00:00:00 /usr/sbin/httpd
apache 2517 1780 0 11:53 ? 00:00:00 /usr/sbin/httpd
root 2531 2474 0 11:56 pts/0 00:00:00 grep httpd
[root@LAMP1 lib]# /usr/sbin/httpd -k restart[root@LAMP1 lib]#
如果想卸载也是一样的:
yum remove php- bcmath
httpd -k restart
‘柒’ php编译安装后如何安装IMAP扩展
今天程序员在最近实施的项目中需要增加IMAP验证,今天历史原因,公司很多服务器的linux操作系统及各应用程序版本都不一样,安装路径也很杂乱,再加上刚接手服务器不久,导致今天在安装IMAP的PHP扩展时,走了很多弯路;帮把今天的操作经理写下来供大家参考学习及备忘之。
环境:
[root@bjdx246 lib]# lsb_release -a
LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Release: 5.4
Codename: Tikanga
[root@bjdx246 lib]# php -v
PHP 5.2.5 (cli) (built: May 29 2013 16:49:51)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
[root@bjdx246 /]# rpm -qa |grep php
php-ldap-5.1.6-43.el5_10
php-cli-5.1.6-43.el5_10
php-common-5.1.6-43.el5_10
再使用phpinfo.php 查看PHP相关信息后,开始安装php-imap,步骤如下:
cd /usr/local/src/php-5.2.5/ext/imap
yum -y install libc-client-*
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-kerberos --with-imap-ssl
make
make install
完成后,屏幕上会有提示/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613 目录下多出一个 imap.so的文件;在上面编译过程中,出现很多报错,根据报错一个网络找答案即可;
编辑 /usr/local/php/lib/php.ini ; 添加一行 extension=imap.so
最后 重启 apache 服务搞定!
注:上面的路径是本台服务器的相关路径,其它的服务器需要根据您的实际情况进行更改,理解整个部署的思路即可哈!
‘捌’ PHP8、FPM及部分扩展编译安装
本着能懒则懒的原则,之前我都是宝塔、lnmp脚本等“一键”
再不济也得来个 apt/yum install php
什么?源码 make install ? 编译参数一言难尽,劝退劝退...我只是想要个开发环境而已
没关系!我来整理一下常用模块以及参数!环境为 ubuntu/debian
检查压缩包的完整性,与官网 sha256比较
安装以下包
官方的拓展分类
根据需要的模块添加其后对应的参数
包含常用模块,可以直接使用
编译并安装后
复制 php.ini 到默认目录 /usr/local/lib/
检查 php安装是否正确
复制 fpm 配置文件、运行服务文件
www.conf php-fpm.conf php-fpm.service
修改 fpm 用户和组,默认为nobody
修改服务文件,取消只读 不然日志不能读写无法启动
设置自启动并运行
本地起服务测试
No package 'libxml-2.0' found
No package ‘sqlite3‘ found
configure: WARNING: unrecognized options: –with-gd
No package 'zlib' found
No package 'libpng' found
No package 'oniguruma' found
No package 'libcurl' found
No package 'libsystemd' found
No package 'openssl' found
No package 'libzip' found