首先需要安裝homebrew
, 不贅述了
php-fpm
php-fpm
是mac下自帶的軟件, 而且兼容不同的PHP版本, 不用額外安裝, 但是fpm是需要配置的, 在/private/etc
下有個模板, 執行
cd /private/etc
cp php-fpm.conf.default php-fpm.conf
- 修改php-fpm.conf中的listen行, 將
listen = 127.0.0.1
改為listen = /tmp/php-fpm.sock
, 這樣運行php-fpm后就會生成/tmp/php-fpm.sock
文件, nginx可以與這個socket文件交互了(當然也可以用默認的監聽端口的方式, 但是指定socket的方式可以避免端口占用的問題, 我認為要放心一些) - 修改
error_log
項, 改為error_log = /usr/local/var/log/php-fpm.log
- 修改
pid
項, 改為pid = /usr/local/var/run/php-fpm.pid
, pid文件記錄fpm的pid, 后續可以用cat /usr/local/var/run/php-fpm.pid
的方式獲得pid sudo php-fpm
, 大功告成!
php
我安裝了php56
, 后來又安裝了php54
...brew install php56
即可
設置php56開機啟動
ln -sfv /usr/local/opt/php56/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php56.plist
在命令行中運行php時, 還需要指定shell環境下的php版本號, 導入環境變量, 在~/.zshrc
中添加一行
export PATH="$(brew --prefix php56)/bin:$PATH"
, 重啟zsh, 搞定!
問題解決
過程中碰到[crit] 2963#0: *138 connect() to unix:/tmp/php5-fpm.sock failed (13: Permission denied) while connecting to upstream
的問題, google到解決方案, 這是由於沒有指定nginx的用戶, nginx的用戶沒有權限訪問fpm造成的
在/private/etc/php-fpm.conf
中找到listen
行, 在后面添加
listen.owner = nobody
listen.group = nobody
並且在/usr/local/etc/nginx/nginx.conf
中找到user
行, 默認的是被注釋掉的, 取消注釋, 這時的用戶是nobody, 重啟nginx和fpm, 問題得到解決
仍然存在的問題 && 收獲
本來是為了裝phpmyadmin才配的php環境, 現在還是沒裝好(╯‵□′)╯︵┻━┻ 始終報"Primary Script Unknown"的錯誤, 暫時不管它了, 換一個圖形化工具管理MySQL好了, 還是做項目要緊...另外, 真的是對nginx配置非常不熟, 依然處於需要的時候各種google加復制粘貼, 有空一定要好好學習一下...
這次折騰發現了兩個不錯的鏈接nginx pitfalls和nginx配置分析, 后一篇給了幾個不錯的鏈接, 要好好消化下.
orz...