Mac OS下配置PHP Nginx PHP-FPM


首先需要安裝homebrew, 不贅述了

php-fpm

php-fpm是mac下自帶的軟件, 而且兼容不同的PHP版本, 不用額外安裝, 但是fpm是需要配置的, 在/private/etc下有個模板, 執行

cd /private/etc
cp php-fpm.conf.default php-fpm.conf
  1. 修改php-fpm.conf中的listen行, 將listen = 127.0.0.1改為listen = /tmp/php-fpm.sock, 這樣運行php-fpm后就會生成/tmp/php-fpm.sock文件, nginx可以與這個socket文件交互了(當然也可以用默認的監聽端口的方式, 但是指定socket的方式可以避免端口占用的問題, 我認為要放心一些)
  2. 修改error_log項, 改為error_log = /usr/local/var/log/php-fpm.log
  3. 修改pid項, 改為pid = /usr/local/var/run/php-fpm.pid, pid文件記錄fpm的pid, 后續可以用cat /usr/local/var/run/php-fpm.pid的方式獲得pid
  4. 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 pitfallsnginx配置分析, 后一篇給了幾個不錯的鏈接, 要好好消化下.

orz...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM