若之前有关注过我的朋友一定看过下面这几篇文章:
- Linux平滑编译升级php至5.5.0
http://levi.yii.so/archives/2987- PHP 5.4.16升级到PHP 5.4.17
http://levi.yii.so/archives/2989- 继续平滑升级你的PHP到5.6.0,及更新代码示例说明
http://levi.yii.so/archives/3596
不过上面这几篇都是针对liunx的,而今天要写的是mac下通过homebrew升级PHP到5.6。之前有写过这样几篇文章
- Mac开发者利器-Homebrew介绍及安装
http://levi.yii.so/archives/1742- 通过homebrew安装、配置nginx、mysql、php-fpm
http://levi.yii.so/archives/3129- Mac下升级php、nginx、redis;更新os至10.9后注意事项
http://levi.yii.so/archives/3189
如果你都有看过,也许你也会像我一开始这样认为的,只要下面这样就可以了
1
2
|
brew update
brew upgrade
|
结果呢?如果一开始你并不是PHP5.6,那是无法升级到5.6来的哦,因为在homebrew下,php是根据大版本号来区分安装和升级的。比如php5.5系列就是php55;php5.6系列就是php56咯;这也包括对应版本的应用,比如:php55-redis、php56-redis。
这就是说,要从PHP5.5升级到PHP5.6就需要重新安装一遍,如下:
1
2
|
brew update
brew
install
php56
|
先别急着敲回车哦,如果真这么简单就好了。首先我是个php-fpm党,而brew默认配置是php-apache,如果你和我一样,那么需要配置安装选项
升级PHP5.6的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# 更新配置
brew update
#去掉PHP55的link
brew unlink php55
#安装PHP56
brew
install
php56
--homebrew-apxs
--without-apache
--with-debug
--with-fpm
--with-gmp
--with-homebrew-curl
--with-homebrew-libxslt
--with-homebrew-openssl
--with-imap
--with-libmysql
--with-tidy
|
很简单吧,不过有几个注意点:
注意点1:使用php-fpm
1
2
|
--without-apache
--with-fpm
|
注意点2:请先确认是否需要支持pgsql
如果你本地没有安装pgsql,安装是会报错的哦,请先确定你受否要配置pgsql
1
|
--with-pgsql
|
注意点3:不要选择HEAD
问题:
- 默认正常的路径为:/usr/local/Cellar/php56/5.6.0/
使用HEAD的方式安装,编译路径为:/usr/local/Cellar/php56/head/这也就意味着,你可能无法默认安装PHP拓展,例如:
1brew
install
php56-redis
- HEAD方式安装的版本为开发版:php 5.6.0.2-dev,而非正式版
你也可以自己查看info来决定安装配置
1
|
brew info php56
|
最后几个步骤:
设置文件、目录权限,以及设置开机启动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 设置目录权限
chmod
-R ug+w
/usr/local/Cellar/php56/5
.6.0
/lib/php
# 设置pear
pear config-
set
php_ini
/usr/local/etc/php/5
.6
/php
.ini
# 拷贝开机启动文件
cp
/usr/local/Cellar/php56/5
.6.0
/homebrew
.mxcl.php56.plist ~
/Library/LaunchAgents/
# 启动开机配置
launchctl load -w ~
/Library/LaunchAgents/homebrew
.mxcl.php56.plist
# 修改php-fpm的用户组为root
sudo
chown
root:wheel
/usr/local/Cellar/php56/5
.6.0
/sbin/php-fpm
# 修改php-fpm的权限
sudo
chmod
u+s
/usr/local/Cellar/php56/5
.6.0
/sbin/php-fpm
|
安装php5.6相关组件
1
2
3
4
5
6
7
8
|
# 安装redis
brew
install
php56-redis
# 安装xdebug
brew
install
php56-xdebug
# 安装mcrypt
brew
install
php56-mcrypt
|
卸载PHP5.5及相关组件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 卸载PHP55
brew uninstall php55
# 卸载redis
brew uninstall php55-redis
# 卸载xdebug
brew uninstall php55-xdebug
# 卸载mcrypt
brew uninstall php55-mcrypt
# 卸载intl,如果你有安装的话
brew uninstall php55-intl
# 清除缓存以及老旧版本文件
brew cleanup -s
|
小提示:
- 最后一定要清除缓存和老旧文件,否则下次更新的时候,PHP还会为你更新php55哦
- 你本地安装的PHP55的组件可能和我不一致哦,具体你可以执行下面的命令查看
1ls
/usr/local/Cellar/php55
*
- 如果出现以下错误提示,可能是以为之前升级过太多的版本造成的
123$ brew uninstall php55-mcrypt
Error: php55-mcrypt has multiple installed versions
Use `brew remove --force php55-mcrypt` to remove all versions.
不需担心,按照提示remove即可
12brew remove --force php55-mcrypt
brew cleanup -s
清除老旧版本直到查找不到php55
1ls
/usr/local/Cellar/php55
*
现在可以启动php-fpm了嘛,先别急,还有下面几个地方需要注意哦
注意点1:删除php55开机启动
1
2
|
launchctl unload -w ~
/Library/LaunchAgents/homebrew
.mxcl.php56.plist
rm
-rf ~
/Library/LaunchAgents/homebrew
.mxcl.php55.plist
|
注意点2:配置bin目录
因为我之前配置过了,所以没有提,如果你没有配置过,可以参考下面
1
2
|
PATH=
"/usr/local/bin:$PATH"
source
~/.bash_profile
|
或者
1
|
export
PATH=
"$(brew --prefix homebrew/php/php56)/bin:$PATH"
|
注意点3:配置PHP
时区修改
http://levi.yii.so/archives/2828
session配置在redis中
http://levi.yii.so/archives/2889
php-fpm 设置为后台启动,不知道为什么php5.6版本中,默认并非后台启动,你可以配置如下:
1
2
3
4
|
vi
/usr/local/etc/php/5
.6
/php-fpm
.conf
# 找到并修改下面配置
daemonize =
yes
|
更多内容,见:
http://levi.yii.so/archives/3127
现在,你可以启动php-fpm啦
1
2
3
4
5
|
# 先关闭之前的php-fpm
sudo
killall php-fpm
# 启动PHP-fpm
/usr/local/Cellar/php56/5
.6.0
/sbin/php-fpm
--fpm-config
/usr/local/etc/php/5
.6
/php-fpm
.conf
|
如果你启动php-fpm的时候出现了以下错误提示,说明你通过brew安装的时候编译的配置找不到了
1
2
3
4
5
|
$
/usr/local/Cellar/php56/5
.6.0
/sbin/php-fpm
--fpm-config
/usr/local/etc/php/5
.6
/php-fpm
.conf
dyld: Library not loaded:
/usr/local/lib/libpq
.5.dylib
Referenced from:
/usr/local/Cellar/php56/5
.6.0
/sbin/php-fpm
Reason: image not found
Trace
/BPT
trap
: 5
|
上面这个错误是因为一开始我安装了pgsql,而之后因为我不使用pgsql,将其卸载了后重启报错的。如果你也出现了上面这样的错误提示。可以尝试以下解决办法:
- 你需要提示的缺失组件,例如pgsql。那么补充安装相应组件
- 如果你不需要缺失的组件,卸载当前版本PHP,重新编译安装
123
brew uninstall php56
brew
install
php56
# ...详细见上面方法,这里不再重复
而我个人选择的是第二种方式(多装几遍,也有好处)
在末尾,稍微提一句,如果你像我一样在PHP5.6之前也安装了php相关的开源程序,比如phpdoc,那么在升级后,会因内核不能用咯。这个时候别去找问题了,重新安装吧,最有效率。
1
2
3
|
brew uninstall phpdocumentor
brew cleanup -s
brew
install
phpdocumentor
|
最后,有什么问题,大家可以给我留言哦,别忘了关注我的博客哦:
http://list.qq.com/cgi-bin/qf_invite?id=b6eb34388fd016582957d6e50d005146e24fe6b166ee66c0