1. 程式人生 > >mac nginx php php-fpm

mac nginx php php-fpm

lan top enabled amp pid 查看 syntax scu etc

#the php-fpm config and cammand...

cp /private/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

php-fpm --fpm-config /usr/local/etc/php-fpm.conf --prefix /usr/local/var

ps aux | grep ‘php-fpm‘

killall -HUP php-fpm

#the nginx config and cammand...

brew services restart nginx

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;


=====>
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

可以在你的location php 裏面添加當文件不存在時返回404而不是交給php-fpm進行處理

location ~ \.php$
{
...
#文件不存在轉404
try_files $uri = 404;
...
}

然後,在你的配置文件中找到下面這段

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

替換成下面 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

mac 啟動php-fpm

Mac OS X 10.9已經自帶有php-fpm,對於有幹凈系統強迫癥的人,或者原裝控來說,用brewhome重裝一遍總感覺心裏會有小兔子,下面把原裝的php-fpm配置起來。 直接運行,有報錯找不到配置文件。 $ php-fpm [11-Jan-2014 16:03:03] ERROR: failed to open configuration file ‘/private/etc/php-fpm.conf‘: No such file or directory (2) [11-Jan-2014 16:03:03] ERROR: failed to load configuration file ‘/private/etc/php-fpm.conf‘ [11-Jan-2014 16:03:03] ERROR: FPM initialization failed 可以在/private/etc/ 目錄下生成配置文件,需要root權限(sudo) 或者在普通用戶有權限的目錄裏放置配置文件,通過--fpm-config參數指定配置文件的位置,如下: # cp /private/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf $ php-fpm --fpm-config /usr/local/etc/php-fpm.conf [11-Jan-2014 16:10:49] ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2) [11-Jan-2014 16:10:49] ERROR: failed to post process the configuration [11-Jan-2014 16:10:49] ERROR: FPM initialization failed 錯誤信息顯示:不能正確的打開”日誌“文件,原因是默認在/usr/var目錄下工作,可以修改配置文件指定正確的日誌文件路徑 $ vim /usr/local/etc/php-fpm.conf 修改php-fpm.conf文件中的error_log項,默認前綴是/usr/var ,但並沒有這個路徑 error_log = /usr/local/var/log/php-fpm.log pid = /usr/local/var/run/php-fpm.pid 或者不修改配置文件中配置項的路徑,在php-fpm的運行參數中(-p)指定放置運行時文件的相對路徑前綴 $ php-fpm --fpm-config /usr/local/etc/php-fpm.conf --prefix /usr/local/var 到此,php-fpm守護進程已經基本可以正確的啟動了。 下面我們看下php.ini配置文件及擴展的安裝。 首先看下編譯參數,有些值是編譯進執行程序的,無法更改。 $ php -i|grep config 找到配置文件(php.ini)、目錄的位置,下面兩項的值指定 ‘--with-config-file-path=/etc‘ ‘--with-config-file-scan-dir=/Library/Server/Web/Config/php‘ 所以我們需要在/etc目錄下創建php.ini,Mac在/private/etc,/etc下均提供了樣例文件php.ini.default,通過查驗,兩個文件完全相同,所以復制哪一個都無所謂,Mac有提供md5而不是Linux下的md5sum: $ md5 /private/etc/php.ini.default /etc/php.ini.default MD5 (/private/etc/php.ini.default) = 1c47241665ea5efdc55fd5809f675449 MD5 (/etc/php.ini.default) = 1c47241665ea5efdc55fd5809f675449 /etc目錄權限root:wheel,需要root權限或使用sudo,關於如何設置Mac的sudo命令需要的密碼,請查看 http://support.apple.com/kb/HT4103?viewlocale=zh_CN&locale=zh_CN http://support.apple.com/kb/PH6515?viewlocale=zh_CN # cp /etc/php.ini.default /etc/php.ini 變更own,以後修改不用老是切換root,生產環境最好不要改 # chown <你的用戶名> /etc/php.ini # chmod u+w /etc/php.ini 安裝PHP擴展 /Library/Server/Web/Config/php 這個目錄並不存在,或者Mac OS X Server版本有吧,不知道,手動創建他,以root權限 # mkdir -p /Library/Server/Web/Config/php 編譯擴展,brewhome是另起爐竈,brew方式安裝擴展需要依賴php,如php54-redis會依賴php54,至於編譯出來的擴展是否可以配置到自帶的,沒有實驗過。下面以php_discuz擴展(https://github.com/potterhe/php_discuz下載)為例。 假如擴展源碼在/Users/apple/php_discuz目錄 $ ./configure $ make 擴展編譯後,默認會存儲在 /Users/apple/php_discuz/modules/discuz.so 將擴展在配置文件中打開 $ echo "extension=/Users/apple/php_discuz/modules/discuz.so" > /Library/Server/Web/Config/php/discuz.ini 測試驗證 $ php -i|grep discuz discuz support => enabled 運行用例測試 $ php -f /Users/apple/php_discuz/discuz.php

Nginx訪問PHP文件的File not found錯誤處理,兩種情況

這個錯誤很常見,原有有下面兩種幾種

1. php-fpm找不到SCRIPT_FILENAME裏執行的php文件

2. php-fpm不能訪問所執行的php,也就是權限問題

第一種情況

可以在你的location php 裏面添加當文件不存在時返回404而不是交給php-fpm進行處理

location ~ \.php$
{
...
#文件不存在轉404
try_files $uri = 404;
...
}

然後,在你的配置文件中找到下面這段

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

替換成下面 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

然後重新加載nginx配置文件

systemctl restart nginx

第二種情況

兩種解決方法:
第一種,就是把你root文件夾設為其他用戶允許
第二種,找到你的php-fpm的配置文件,找到下面這段,把apache替換成你要的用戶組


; RPM: apache Choosed to be able to access some dir as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

mac nginx php php-fpm