homebrew升级PHP至5.6

若之前有关注过我的朋友一定看过下面这几篇文章:

  1. Linux平滑编译升级php至5.5.0
    http://levi.yii.so/archives/2987
  2. PHP 5.4.16升级到PHP 5.4.17
    http://levi.yii.so/archives/2989
  3. 继续平滑升级你的PHP到5.6.0,及更新代码示例说明
    http://levi.yii.so/archives/3596

不过上面这几篇都是针对liunx的,而今天要写的是mac下通过homebrew升级PHP到5.6。之前有写过这样几篇文章

  1. Mac开发者利器-Homebrew介绍及安装
    http://levi.yii.so/archives/1742
  2. 通过homebrew安装、配置nginx、mysql、php-fpm
    http://levi.yii.so/archives/3129
  3. 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

问题:

  1. 默认正常的路径为:/usr/local/Cellar/php56/5.6.0/
    使用HEAD的方式安装,编译路径为:/usr/local/Cellar/php56/head/

    这也就意味着,你可能无法默认安装PHP拓展,例如:

    1
    brew install php56-redis
  2. 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

小提示:

  1. 最后一定要清除缓存和老旧文件,否则下次更新的时候,PHP还会为你更新php55哦
  2. 你本地安装的PHP55的组件可能和我不一致哦,具体你可以执行下面的命令查看
    1
    ls /usr/local/Cellar/php55 *
  3. 如果出现以下错误提示,可能是以为之前升级过太多的版本造成的
    1
    2
    3
    $ brew uninstall php55-mcrypt
    Error: php55-mcrypt has multiple installed versions
    Use `brew remove --force php55-mcrypt` to remove all versions.

    不需担心,按照提示remove即可

    1
    2
    brew remove --force php55-mcrypt
    brew cleanup -s

    清除老旧版本直到查找不到php55

    1
    ls /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,将其卸载了后重启报错的。如果你也出现了上面这样的错误提示。可以尝试以下解决办法:

  1. 你需要提示的缺失组件,例如pgsql。那么补充安装相应组件
  2. 如果你不需要缺失的组件,卸载当前版本PHP,重新编译安装
    1
    2
    3
    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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值