温馨提示×

ubuntu php-fpm怎样连接

小樊
41
2026-09-25 16:25:56
栏目: 编程语言

在 Ubuntu 上,PHP-FPM 本身不直接“连接”,而是由 Web 服务器(Nginx / Apache)通过 socket 或端口调用 PHP-FPM 来处理 PHP 请求。下面分情况说明。


一、PHP-FPM 的监听方式

Ubuntu 下 PHP-FPM 通常监听两种方式之一:

1. Unix Socket(推荐,默认)

listen = /run/php/php8.1-fpm.sock

2. TCP 端口

listen = 127.0.0.1:9000

配置文件路径(以 PHP 8.1 为例):

/etc/php/8.1/fpm/pool.d/www.conf

修改后重启:

sudo systemctl restart php8.1-fpm

二、Nginx 连接 PHP-FPM(最常见)

1️⃣ Socket 方式(推荐)

server {
    listen 80;
    server_name example.com;
    root /var/www/html;

    index index.php index.html;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}

2️⃣ TCP 方式

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass 127.0.0.1:9000;
}

重启 Nginx:

sudo systemctl restart nginx

三、Apache 连接 PHP-FPM

方式:proxy_fcgi

sudo apt install apache2 php8.1-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.1-fpm
sudo systemctl restart apache2

Apache 会自动通过 socket 连接 PHP-FPM。


四、测试是否连接成功

新建测试文件:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

浏览器访问:

http://服务器IP/info.php

能看到 PHP 信息页即说明连接成功。


五、常见问题排查

PHP-FPM 没启动

systemctl status php8.1-fpm

权限问题(socket)

ls -l /run/php/php8.1-fpm.sock

确保 Web 用户(www-data)有权限。

Nginx 报错

tail -f /var/log/nginx/error.log

如果你能告诉我:

  • 用的是 Nginx 还是 Apache
  • PHP 版本
  • 报错信息

我可以给你更精确的配置。

0 踩