前言

PHP 的扩展相当丰富,可是有些扩展安装起来并不是那么地顺利,谨以此文汇总下我曾经遇到过的问题。

由于PHP版本也是在不断地更新,某些问题的解决方案以后可能会失效,所以此文仅作参考。

若有发现某个解决方案失效了,还请见谅,并欢迎指出以便更正。

pecl/pear的安装

使用pecl/pear可以很方便地安装一些PHP扩展。
下载go-pear: http://pear.PHP.net/go-pear.phar
然后执行这个phar文件:

sudo PHP go-pear.phar

至于提示的目录设置,一般而言默认的就够用了。如需定制请自便。

安装好了后,建议将pear和pecl的目录加入到PATH中,或者可以加个软连接到path的某个目录中,以便以后使用,如:

ln -s /usr/local/Cellar/php56/5.6.16/bin/pecl /usr/local/bin/
ln -s /usr/local/Cellar/php56/5.6.16/bin/pear /usr/local/bin/

安装intl扩展

使用包管理进行安装

在debian/ubuntu/centos上都有对应的包:php5-intl, 直接使用apt或yum来安装即可:

sudo apt-get install -y php5-intl

可惜在 mac OS X 上并不能这样安装,只能通过pecl或源码安装

使用pecl进行安装

sudo pecl update-channels
sudo pecl install intl

如遇到询问icu的路径,则请寻找其路径并提供给安装程序,如:/usr/local/Cellar/icu4c/56.1

从源码安装

下载地址: http://pecl.PHP.net/package/intl
下载最新版本,然后解压缩后:

phpize
./configure
make
sudo make install

成功的安装将创建 intl.so 并放置于 PHP 的扩展库目录中。需要调整 PHP.ini,加入 extension=intl.so 这一行之后才能使用此扩展库。

问题:icu-config找不到?

现象:

checking for icu-config... no
checking for location of ICU headers and libraries... not found
configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.

解决方案:
对于debian/ubuntu/centos则可以安装下icu libicu libicu-devel

sudo apt-get install -y icu libicu libicu-devel

对于mac OS X则需要安装icu4c:

brew install icu4c

然后再编译intl的时候提供这个icu的路径,如:

cd path/to/intl-v3.0.0
./configure --with-icu-dir=/usr/local/Cellar/icu4c/56.1

注意:替换下版本号。

安装mcrypt扩展

mcrypt是一个功能很强大的加密算法扩展库,一般直接有这个的包

使用包管理功能安装

# for ubuntu/debian
sudo apt-get install php5-mcrypt

# for centos
sudo yum install libmcrypt libmcrypt-devel
sudo yum install PHP-mcrypt

# for OS X
brew install php56-mcrypt

从源码安装

// TODO: 待续 -- 目前在安装其依赖的mhash的时候一直有问题还没解决

一个常用的PHP编译配置参数

./configure --prefix=/usr/local/PHP\
 --with-libdir=lib64\
 --enable-fpm\
 --with-fpm-user=PHP-fpm\
 --with-fpm-group=www\
 --enable-mysqlnd\
 --with-mysql=mysqlnd\
 --with-mysqli=mysqlnd\
 --with-pdo-mysql=mysqlnd\
 --enable-opcache\
 --enable-pcntl\
 --enable-mbstring\
 --enable-soap\
 --enable-zip\
 --enable-calendar\
 --enable-bcmath\
 --enable-exif\
 --enable-ftp\
 --enable-intl\
 --with-openssl\
 --with-zlib\
 --with-curl\
 --with-gd\
 --with-zlib-dir=/usr/lib\
 --with-png-dir=/usr/lib\
 --with-jpeg-dir=/usr/lib\
 --with-gettext\
 --with-mhash\
 --with-ldap