php-fpm 找不到 php-cgiphpfpm.sockk 怎么办

nginx 和 php-fpm 通信使用unix socket还是TCP,及其配置 | 渣滓洞【解旻的博客】
nginx和fastcgi的通信方式有两种,一种是TCP的方式,一种是unix socke方式。两种方式各有优缺点,这里先给出两种的配置方法,然后再对性能、安全性等做出总结。
TCP配置方式
TCP通信配置起来很简单,三步即可搞定
第一步,编辑 /etc/nginx/conf.d/你的站点配置文件(如果使用的默认配置文件,修改/etc/nginx/sites-available/default)
将fastcgi_pass参数修改为127.0.0.1:9000,像这样:
location ~ \.php$ {
index index.php index.html index.
include /etc/nginx/fastcgi_
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.
include fastcgi_
location ~ \.php$ {&&&&&&index index.php index.html index.htm;&&&&&&include /etc/nginx/fastcgi_params;&&&&&&fastcgi_pass 127.0.0.1:9000;&&&&&&fastcgi_index index.php;&&&&&&include fastcgi_params; }
第二步,编辑php-fpm配置文件 /etc/php5/fpm/pool.d/www.conf
将listen参数修改为127.0.0.1:9000,像这样:
listen = 127.0.0.1:9000
listen = 127.0.0.1:9000
第三步,重启php-fpm,重启nginx
unix socket配置方式
unix socket其实严格意义上应该叫unix domain socket,它是*nix系统进程间通信(IPC)的一种被广泛采用方式,以文件(一般是.sock)作为socket的唯一标识(描述符),需要通信的两个进程引用同一个socket描述符文件就可以建立通道进行通信了。
配置需要五步
第一步,决定你的socket描述符文件的存储位置。
可以放在系统的任意位置,如果想要更快的通信速度,可以放在/dev/shm下面,这个目录是所谓的tmpfs,是RAM可以直接使用的区域,所以,读写速度都会很快。
决定了文件位置,就要修改文件的权限了,要让nginx和php-fpm对它都有读写的权限,可以这样:
sudo touch /dev/shm/fpm-cgi.sock
sudo chown www-data:www-data /dev/shm/fpm-cgi.sock
sudo chmod 666 /dev/shm/fpm-cgi.sock
sudo touch /dev/shm/fpm-cgi.socksudo chown www-data:www-data /dev/shm/fpm-cgi.socksudo chmod 666 /dev/shm/fpm-cgi.sock
第二步,修改php-fpm配置文件/etc/php5/fpm/pool.d/www.conf
将listen参数修改为/dev/shm/fpm-cgi.sock,像这样:
listen = /dev/shm/fpm-cgi.sock
listen = /dev/shm/fpm-cgi.sock
将listen.backlog参数改为-1,内存积压无限大,默认是128,并发高了之后就会报错
; Set listen(2) backlog. A value of '-1' means unlimited.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
listen.backlog = -1
; Set listen(2) backlog. A value of '-1' means unlimited. ; Default Value: 128 (-1 on FreeBSD and OpenBSD) listen.backlog = -1
第三步,修改nginx站点配置文件
将fastcgi_pass参数修改为unix:/dev/shm/fpm-cgi.sock,像这样:
location ~ \.php$ {
index index.php index.html index.
include /etc/nginx/fastcgi_
fastcgi_pass unix:/dev/shm/fpm-cgi.
fastcgi_index index.
include fastcgi_
location ~ \.php$ {&&&&&&index index.php index.html index.htm;&&&&&&include /etc/nginx/fastcgi_params;&&&&&&fastcgi_pass unix:/dev/shm/fpm-cgi.sock;&&&&&&fastcgi_index index.php;&&&&&&include fastcgi_params;}
第四步,修改/etc/sysctl.conf 文件,提高内核级别的并发连接数(这个系统级的配置文件我也不是特别熟悉,参考的是:《》)
sudo echo 'net.core.somaxconn = 2048' && /etc/sysctl.conf
sudo sysctl -p
sudo echo 'net.core.somaxconn = 2048' && /etc/sysctl.conf sudo sysctl -p
第五步, 重启nginx和php-fpm服务(最好先重启php-fpm再重启nginx)
两种通信方式的分析和总结
从原理上来说,unix socket方式肯定要比tcp的方式快而且消耗资源少,因为socket之间在nginx和php-fpm的进程之间通信,而tcp需要经过本地回环驱动,还要申请临时端口和tcp相关资源。
当然还是从原理上来说,unix socket会显得不是那么稳定,当并发连接数爆发时,会产生大量的长时缓存,在没有面向连接协议支撑的情况下,大数据包很有可能就直接出错并不会返回异常。而TCP这样的面向连接的协议,多少可以保证通信的正确性和完整性。
当然以上主要是半懂不懂的理论分析加主观臆测,具体的差别还是要通过测试数据来说话,以后有空,会进行这方面的测试。从网上别人博客的测试数据,我的理论分析差不多是对的。至于你选择哪种方式,我只能说“鱼和熊掌不可兼得也”,通过高超的运维和配置技巧,在性能和稳定性上做一个平衡吧。
说说我的选择
其实,如果nginx做要做负载均衡的话,根本也不要考虑unix socket的方式了,只能采用TCP的方式。现在我的小站没有那么高的并发量,所以就用unix socket了,以后如果有了高并发业务,再进行一些参数调整即可应付,如果真要是无法支撑,那只能做负载均衡了,到时候自然会选择TCP方式。
声明:如未作说明,则本文为原创。转载务必注明。
注意:转载须保留全文,如需修改请。
本文永久地址:
您可能还对以下文章感兴趣
March 2016
78910111213
14151617181920
21222324252627php-fpm 找不到 php-cgi.sock 怎么办_百度知道
php-fpm 找不到 php-cgi.sock 怎么办
提问者采纳
的问题不是太明确,一种是sock文件。一种是通过端口来操作。php-fpm有两种listen方式。希望能帮助到你如有其他问题
某公司设计部部长
其他类似问题
为您推荐:
fpm的相关知识
其他1条回答
麻烦吧具体问题描述清楚,贴出关键提示,和相关配置。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁debian - how to create php-fastcgi.sock for Nginx - Unix & Linux Stack Exchange
to customize your list.
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.
Here's how it works:
Anybody can ask a question
Anybody can answer
The best answers are voted up and rise to the top
I've installed Debian Wheezy and downgraded php5.4 to php5.3, and wanted to use fastCgi instead of php-fpm since it is not included in php5.3 package.
now I run into a little issue and can't seem to find a way around it. This issue is unix:/var/run/php-fpm/php-fpm.sock can't be created.
I have created a file for UNIX socket /usr/bin/php-fastcgi
#!/bin/bash
FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi
/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5
And this my Nginx vhost:
root /srv/www//public_
location / {
index.html index.
location ~ \.php$ {
include /etc/nginx/fastcgi_
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.
fastcgi_index index.
fastcgi_param SCRIPT_FILENAME $fastcgi_script_
The main issue is always this:
connect() to unix:/var/run/php-fastcgi/php-fastcgi.socket failed (2: No such file or directory)
And this is for Enable and Start fastcgi service:
#!/bin/bash
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop:
# Short-Description: starts php over fcgi
# Description:
starts php over fcgi
### END INIT INFO
(( EUID )) && echo .You need to have root priviliges.. && exit 1
BIND=127.0.0.1:9000
USER=www-data
PHP_FCGI_CHILDREN=10
PHP_FCGI_MAX_REQUESTS=10000
PHP_CGI=/usr/bin/php-cgi
PHP_CGI_NAME=`basename $PHP_CGI`
PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
echo -n "Starting PHP FastCGI: "
start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
echo "$PHP_CGI_NAME."
echo -n "Stopping PHP FastCGI: "
killall -q -w -u $USER $PHP_CGI
echo "$PHP_CGI_NAME."
case "$1" in
echo "Usage: php-fastcgi {start|stop|restart}"
exit $RETVAL
I'm wondering what is missing??
any comment is appreciated!!
nginx will create php-fastcgi.socket for you, but it must have permission to write in directory which you defined in config file.
As root, try:
mkdir /var/run/php-fastcgi
chown www-data:www-data /var/run/php-fastcgi
59.1k983162
Change the init script to bind on a socket by changing the 127.0.0.1:9000 to your full path and socket filename.
Your Answer
Sign up or
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Post as a guest
By posting your answer, you agree to the
Not the answer you're looking for?
Browse other questions tagged
Linux is a registered trademark of Linus Torvalds. UNIX is a registered trademark of The Open Group. This site is not affiliated with Linus Torvalds or The Open Group in any way.
Unix & Linux Stack Exchange works best with JavaScript enabledTommy 碎碎念
:&Nginx/FastCGI/PHP-FPM 相關設定
@ 02 十二月,
上個月中開始, 逐步將家裡機器裡頭的 /mod_php 改成 /FastCGI/
來運作. 經過了近兩個星期的嚐試, 目前看起來應該是可以完整的取代了.以下是在
Stable (Squeeze) 的安裝與設定. PHP-FPM在
5.3.3 之後, 這功能已經被 PHP 官方納入, 所以應該不用再自行 patch 並編譯. 不過... 雖然 Debian Squeeze 的 PHP 已經是 5.3.3 的版本, 但是並沒有把 php-fpm 給編入, 所以.... 我們還是要自己處理. 可以把 testing 裡的 php 5.3.8 source 抓回來自行編譯就可以用了.安裝 php5-fpm 之後, 設定檔在 /etc/php5/fpm/ 底下, 基本上只要修改 /etc/php5/fpm/pool.d/www.conf 就可以了. 我是把 listen 由 tcp 改成 socket file 來使用. 另外, 可以指定不同的使用者來執行 php, 所以, 我把 www.conf 複製成 tommy.conf, 然後把 裡頭的 www 換成 tommy, 也把 user 設成 $pool (也就是 tommy), 把 listen 指定成 /var/run/php-fpm/$pool.sock (要自己建立該目錄). 這樣子重新執行後, 就會多幾個用 tommy 這個使用者執行的程式出現. 這樣子我們可以在後面的 nginx 中, 讓使用者使用自己的 user 來跑 php (就像 suphp 的作法一樣), 而不是強迫所有的人都用 httpd 的使用者來跑 php. (差別在於對於使用者本身的目錄有讀寫的權限, 如果用 httpd 的使用者來跑的話, 寫入檔案或上傳檔案之後的使用者會是 httpd 的使用者, 會有權限的問題)另外, 如果有需要修改 php.ini 的話, 記得是去改 /etc/php5/fpm/php.ini 才可以. (後頭會提到有個地方要改) Nginx在 Debian Squeeze 的 Nginx 好像是 0.7.x 版的, 要直接用也可以. 如果要新版的, 可以用 Nginx 本身提供的版本 (stable 版本, 目前是 1.0.10), 的底下有安裝的說明. 另外, 在 , 也有提供新版的 Nginx (用的是 development 的版本, 1.1.0, PS. Nginx 最新的 development 版本是 1.1.10).把 nginx 裝起來後, 應該只要去修改 /etc/nginx/nginx.conf 裡頭有關 php 的那一段後, 執行 /etc/init.d/nginx reload 就應該可以執行 php 了. (對於沒有 rewrite 處理過, 能正確找到應該有的檔案的情形下, 應該都可以用)聽起來很簡單吧.... 不過有些小地方我們要注意一下.預設的設定方式可能像這樣:location ~ \.php$ {
#fastcgi_pass
127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm.sock
fastcgi_index
index.php;
fastcgi_params;}就直接把有 .php 的 request 轉給 fastcgi 的 server (一般來說, 如果沒有非本機連線的需求時, 用 socket file 的方式應該會比較好).不過這個方式並不能正確處理 PATH_INFO, 所以如果你的 php 程式有用到 PATH_INFO 時, 就會有問題.而 PATH_INFO 的處理, 可以有兩種方式來處理, 一種是交給 php 本身來處理, 只要在 php.ini 把 cgi.fix_pathinfo 設成 1, 然後 nginx 中的設定改成這樣:location ~ \.php {
#fastcgi_pass
127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index
index.php;
fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name; }把 location .php 後頭的 $ 移除, 然後加上如上頭的 PHP_INFO 參數. 這樣子 php 本身會產生正確的 PATH_INFO 與 PATH_TRANSLATED 變數. 不過... 當沒有 PATH_INFO 時, 上頭這個設定會有點不太正確, 有些程式可能反而不能正常運作 (如 Cacti), 所以, 我們可以把兩種設定都放上去, 像是:location ~ \.php$ {
#fastcgi_pass
127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index
index.php;
fastcgi_params;}location ~ \.php {
#fastcgi_pass
127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index
index.php;
fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name; }先設定 .php$, 再設定 .php 這樣就應該可以了. 不過目前 php 本身的處理會有安全上的問題 (google 找一下應該可以看到一些例子), 所以... 不建議由 php 來處理 PATH_INFO, 而改用 nginx 來處理. 如果要使用 nginx 來處理的話, 請將 php.ini 的 cgi.fix_pathinfo 設為 0, 再把 cgi.discard_path 設成 1 (這參數多數系統的 php.ini 裡頭都沒有, 自己加上去吧, 這是 5.3.3 之後才有的參數, 如果不設為 1, 在我的測試環境中, 有 PATH_INFO 的情況都會出現 404 的錯誤). 然後使用這樣子的設定方式:location ~ \.php {
include fastcgi_
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_
fastcgi_param PATH_INFO $fastcgi_path_
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_
#fastcgi_pass
127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index
index.php;}不過, 這樣子處理, 在沒有 PATH_INFO 時, 會被 PATH_INFO 設成空字串 (但仍有這變數), 這時...& PHP_SELF 也會被設成空的, 對某些使用到 PHP_SELF 的程式可能會有問題 (如 Cacti). 比較合理的方式應該是去檢查 $fastcgi_path_info 是不是空的, 如果不是才去設定 PATH_INFO 與 PATH_TRANSLATED 的值. 不過... 很可惜, nginx 並不能在 if 裡頭去設定 fastcgi_param, 所以... 沒辦法這樣子來設定. 所以... 跟上頭一樣, 我們也可以加上另一個不用 PATH_INFO 的設定, 如:location ~ \.php$ {
#fastcgi_pass
127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index
index.php;
include fastcgi_params;}location ~ \.php {
include fastcgi_params;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
#fastcgi_pass
127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index
index.php;}這樣子應該不管有沒有 PATH_INFO 都可以正常使用. 不過... 就是要寫兩段... 所以, 我用另一種方式如:location ~ \.php {
include fastcgi_params;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
set $p $fastcgi_path_info;
if ($p = &&) {
set $p $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $p;
fastcgi_param PATH_TRANSLATED $document_root$p;
#fastcgi_pass
127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index
index.php;}把空的 PATH_INFO 設成 $fastcgi_script_name, 這樣子在我的系統上看起來運作也是正常的. (不知道有沒有錯, 也許寫成兩段才是比較合理的方式)接著... 前面有提到我們可以讓不同的使用者, 以他們的身份來執行 php, 所以... 例如:location ~ \.php {
include fastcgi_params;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
set $p $fastcgi_path_info;
if ($p = &&) {
set $p $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $p;
fastcgi_param PATH_TRANSLATED $document_root$p;
#fastcgi_pass
127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm/tommy.sock;
fastcgi_index
index.php;}如果是 tommy 這個使用者, 就去使用 tommy 的那一個 socket file.不過... 如果有很多使用者, 就表示每一個的設定都有單獨去設... 這樣如果要改, 可能會很麻煩,& 所以... 我們可以把加上一個變數來使用, 把上頭的設定獨立成一個叫 php.conf (放 /etc/nginx/conf/ 目錄下) 的檔案, 這樣在每一個使用者的設定, 只要先去指定變數再去 include conf/php.conf 就可以.location ~ \.php {
uninitialized_variable_warn off;
include fastcgi_params;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
set $p $fastcgi_path_info;
if ($p = &&) {
set $p $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $p;
fastcgi_param PATH_TRANSLATED $document_root$p;
#fastcgi_pass
127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm/$cur_php_user.sock;
fastcgi_index
index.php;}先用 uninitialized_variable_warn off 把使用到沒初始化的變數警告關閉, 然後把 fastcgi_pass 的值加上變數來處理.server {
# for user tommy
set $cur_php_user tommy;
include conf/php.conf;}這樣子在該使用者的主機設定用這方式來處理就可以了.不過... 這時有個問題, 如果並沒有在 php-fpm 裡頭去跑那個使用者的 php 程式時, 或忘了設定 $cur_php_user 時... 就沒有那個 socket file, 這時... 執行就會有問題.比較合理的方式應該像是:location ~ \.php {
uninitialized_variable_warn off;
include fastcgi_params;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
set $p $fastcgi_path_info;
if ($p = &&) {
set $p $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $p;
fastcgi_param PATH_TRANSLATED $document_root$p;
#fastcgi_pass
127.0.0.1:9000;
set $fpm_url unix:/var/run/php-fpm.sock;
if (-f /var/run/php-fpm/$cur_php_user.sock) {
set $fpm_url /var/run/php-fpm/$cur_php_user.sock;
fastcgi_pass $fpm_url;
fastcgi_index
index.php;}檢查該 socket file 是否存在, 若不存在則用系統原本的那一個.這樣看起來很完美吧. 不過... 上頭的方式是無法運作的, 因為 -f 會用 S_ISREG() 來檢查檔案是否存在, 而 socket file 用這方式查會不存在, 等於是永遠不會用該使用者的身分來執行 php. 所以... 要不就是修改 nginx 的原始碼, 加上 S_ISSOCK() 的處理, 或... 退一步, 我們檢查 php-fpm 的設定檔, 如:location ~ \.php {
uninitialized_variable_warn off;
include fastcgi_params;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
set $p $fastcgi_path_info;
if ($p = &&) {
set $p $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $p;
fastcgi_param PATH_TRANSLATED $document_root$p;
#fastcgi_pass
127.0.0.1:9000;
set $fpm_url unix:/var/run/php-fpm.sock;
if (-f /etc/php5/fpm/pool.d/$cur_php_user.conf) {
set $fpm_url /var/run/php-fpm/$cur_php_user.sock;
set $cur_php_user &&;
fastcgi_pass $fpm_url;
fastcgi_index
index.php;}這樣子, 除非加了 php-fpm 的設定檔, 但忘了重跑 php-fpm, 否則應該不會有出現找不到 fastcgi backend 的情形. 不過, 以往使用 apache 的時候, 可以讓不同的附檔名如 .php, .php3, .phtml, .suphp 都當成是 php 來執行. 這時, 在 nginx 上頭, 要怎麼處理呢?由於 nginx 的設定都是用正規表示式來處理, 所以, 原本很簡單的想法, 就是直接把各種檔名都加上, 如: location ~ \.(php|php3|phtml|suphp) {
uninitialized_variable_warn off;
include fastcgi_params;
fastcgi_split_path_info ^((?U).+\.(php|php3|phtml|suphp))(/?.+)$;
set $p $fastcgi_path_info;
if ($p = &&) {
set $p $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $p;
fastcgi_param PATH_TRANSLATED $document_root$p;
#fastcgi_pass
127.0.0.1:9000;
set $fpm_url unix:/var/run/php-fpm.sock;
if (-f /etc/php5/fpm/pool.d/$cur_php_user.conf) {
set $fpm_url /var/run/php-fpm/$cur_php_user.sock;
set $cur_php_user &&;
fastcgi_pass $fpm_url;
fastcgi_index
index.php;}看起來似乎沒錯, 不過... 由於用到了 fastcgi_split_path_info, 而這個後頭只接受傳回兩個值的正規表示式, 所以上頭的方式, 就不被 nginx 所接受. 這時... 我們只能選擇把每一種附檔名寫一段設定來處理 (這樣實在不是個好方法), 或者.. 不要用 fastcgi_split_path_info 來處理, 自行用正規表示式來處理, 如: location ~ ^(?&SCRIPT&/.*\.(php|php3|phtml|suphp))(?&PATH_INFO&.*)$ {
uninitialized_variable_warn off;
if ($PATH_INFO = &&) {
# avoid empty path_info
set $PATH_INFO $SCRIPT;
set $fpm_url unix:/var/run/php-fpm.sock;
if (-f /etc/php5/fpm/pool.d/$cur_php_user.conf) {
set $fpm_url unix:/var/run/php-fpm/$cur_php_user.sock;
set $cur_php_user &&;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PATH_INFO $PATH_INFO;
fastcgi_param PATH_TRANSLATED $document_root$PATH_INFO;
fastcgi_param SCRIPT_NAME $SCRIPT;
fastcgi_param SCRIPT_FILENAME $document_root$SCRIPT;
fastcgi_pass $fpm_url;}這樣子, 就能對多種附檔名都放在同一個設定裡頭了.&:這星期試著測試 Gallery3, 發現這樣的設定還是會造成問題, 所以比較好的作法, 還是把它分成兩段來處理. 如:&location ~ ^(?&SCRIPT&/.*\.(php|php3|phtml|suphp))$ {
uninitialized_variable_warn off;
set $fpm_url unix:/var/run/php-fpm.sock;
if (-f /etc/php5/fpm/pool.d/$cur_php_user.conf) {
set $fpm_url unix:/var/run/php-fpm/$cur_php_user.sock;
set $cur_php_user &&;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_NAME $SCRIPT;
fastcgi_param SCRIPT_FILENAME $document_root$SCRIPT;
fastcgi_pass $fpm_url;}location ~ ^(?&SCRIPT&/.*\.(php|php3|phtml|suphp))(?&PATH_INFO&.*)$ {
uninitialized_variable_warn off;
if ($PATH_INFO = &&) {
# avoid empty path_info
set $PATH_INFO $SCRIPT;
set $fpm_url unix:/var/run/php-fpm.sock;
if (-f /etc/php5/fpm/pool.d/$cur_php_user.conf) {
set $fpm_url unix:/var/run/php-fpm/$cur_php_user.sock;
set $cur_php_user &&;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param PATH_INFO $PATH_INFO;
fastcgi_param PATH_TRANSLATED $document_root$PATH_INFO;
fastcgi_param SCRIPT_NAME $SCRIPT;
fastcgi_param SCRIPT_FILENAME $document_root$SCRIPT;
fastcgi_pass $fpm_url;}&&
感謝您鉅細靡遺的闡釋觀念與實務上的解說,受益良多
小弟也是想要停用apache 而移轉到 nginx 上去。我所習慣的語言是ruby on rails,坦言之這方面的設定資料真的是不多。
花了一些功夫終於把rails的程式給請上去nginx 了,但我目前是保留著apache 跟 phpmyadmin,我是想要把phpmyadmin 也給請過去。
不過。 找到的資料泰半不完整。 我用的作業系統是ubuntu 11.10
不知您是否有相關的資料。 像是如何在ubuntu 上安裝php-fpm 的
麻煩您了。 再次感謝您
不知道 11.10 是基於 debian 那一個時期的版本做的.
php-fpm 應該在 5.3.3 會納入 php 中 (不過 debian 的 squeeze 5.3.3 的 php 並沒有把這個編入).
我知道是是 woody 裡的 php 5.3.8 就有 php-fpm...php-fpm 找不到 php-cgi.sock 怎么办_百度知道
php-fpm 找不到 php-cgi.sock 怎么办
提问者采纳
一种是sock文件麻烦吧问题描述清楚,php-fpm有两种listen方式,一种是通过端口来操作
其他类似问题
为您推荐:
fpm的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 nginx php fpm sock 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信