解决docker 跑 php-fpm 报错问题

date
Apr 3, 2024
slug
resolve-the-error-encountered-while-running-PHP-FPM-in-docker
status
Published
tags
docekr
php-fpm
php7.4
nginx
dockerfile
summary
解决了页面报 File not found. 的问题
type
Post
最近要维护一个 php 的老项目,php 7 版本的,我的开发机器只装了 php8 的,跑不了,又不想重新编一个 php 版本,所以索性用 docker 跑一个吧,用完可以关闭。
启动后页面显示
File not found.
发现日志报错
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
网上大部分都说是目录的问题,需要在 nginx 配置 fastcgi_param SCRIPT_FILENAME 指定目录,就是下面这行
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
改为
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
/var/www/html 是项目的目录,但实际上nginx 配的目录和我实际的目录是相同的,肯定不是这个问题,后来想了一下会不是用户问题,因为 php-fpm 容器跑的是 www-data 用户和组,我的 nginx 跑的是 www 用户和组,要不就改 nginx 的用户,要不就改 php-fpm 的用户,我肯定不能改我原有设置,所有就从容器下手,进入容器,增加 www 用户和组,需改 www.conf,把里面的用户组改为 www,重启容器马上就好了。
后来我把原有 php-fpm 的 dockerfile 修改了一下,增加了创建 www 用户组,把 www.conf 挂载在外面,方便修改。
 

© Deron Cheng 2022 - 2024