mac下安装多版本php和配置php-fpm的一些坑
phpbrew的安装
请参考phpbrew的安装
php -v和(php-fpm或 phpinfo())版本不一样
用phpbrew
安装php5.6.30
,然后用phpbrew switch php-5.6.30
切换成5.6.30
在终端下使用php -v
1 | PHP 5.6.30 (cli) (built: May 14 2019 18:30:16) |
在终端下使用php-fpm -v
1 | PHP 7.1.16 (fpm-fcgi) (built: Mar 31 2018 03:00:16) |
在web端如下
解决
添加php-fpm软链
1 | sudo ln -s /Users/kb/.phpbrew/php/php-5.6.30/sbin/php-fpm /usr/sbin/php-fpm |
如果/usr/sbin
下存在php-fpm
,就先把原来的删除
创建软连接以后,关闭终端,重新进入,分别运行php -v
和php-fpm -v
看下版本是否一致
1 | php -v |
配置完上面后,在web页面打开会遇到访问php页面404的问题
解决nginx访问php页面404问题
查看php5.6.30 sock
的绝对路径
1 | cat ~/.phpbrew/php/php-5.6.30/etc/php-fpm.conf | grep "listen = /" |
然后把这个路径添加到nginx 的配置文件中,nginx 的配置文件在/usr/local/etc/nginx/nginx.conf
1 | location ~ \.php$ { |
解决Permission denied while connecting to upstream问题
过程中碰到[crit] 2963#0: *138 connect() to unix:/tmp/php5-fpm.sock failed (13: Permission denied) while connecting to upstream
的问题, 这是由于没有指定nginx的用户, nginx的用户没有权限访问fpm造成的
在/Users/kb/.phpbrew/php/php-5.6.30/etc/php-fpm.conf
中找到listen
行, 在后面添加
1 | listen.owner = nobody |
并且在/usr/local/etc/nginx/nginx.conf
中找到user
行, 默认的是被注释掉的, 取消注释, 这时的用户是nobody, 重启nginx和fpm, 问题得到解决
然后就可以愉快地使用php+nginx 5.6版本了
我的nginx的配置
下面贴出我的nginx的配置
1 | #user nobody; |