我正在努力理解我的错误在哪里。我看了各种答案并尝试了补救措施,结果发现他们的解决方案并没有纠正我的问题。我已经将所有内容剥离到最基本的部分,看看是否可以得到一个基本的PHP索引。php来展示自己。
以下是我试图在核心实现的目标:
我有docker compose站在1个网络上,2个服务连接到网络上。一个服务是PHP-FPM,另一个是为PHP-FPM服务的nginx。每次我站起来,不管我如何配置它,我只会得到一个502坏网关
,当我检查nginx容器日志时,我会得到[错误]29#29:.1 connect()在连接到上游时失败(113:主机无法访问)。
./docker撰写。yml
version: "3.7"
networks:
app:
driver: bridge
services:
php:
image: php:7.4-fpm
container_name: php
volumes:
- /home/admin/dev/test/php/www.conf:/usr/local/etc/php-fpm.d/www.conf
- /home/admin/dev/test/src/:/var/www/html
networks:
- app
nginx:
image: nginx:alpine
container_name: nginx
depends_on:
- php
ports:
- "80:80"
- "443:443"
volumes:
- /home/admin/dev/test/src/:/usr/share/nginx/html
- /home/admin/dev/test/nginx/conf.d/app.conf:/etc/nginx/conf.d/app.conf
networks:
- app
./php/www.conf-
[www]
user = www-data
group = www-data
listen = 0.0.0.0:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
./nginx/conf.d/app。形态-
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
./src/index。php-
<?php
phpinfo();
Docker:
Docker版本19.03。12,构建48a66213fe
Docker compose:Docker compose版本1.25。4、构建未知的
环境:Linux本地主机。localdomain 5.7。14-200.fc32。x86_64#1 SMP周五8月7日23:16:37 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
(Fedora 32工作站)
我相信我只是对PHP-FPM有一个很大的误解,但也许还有别的东西。
故障排除期间的更新想到我的整体环境(即Fedora 32)搞砸了。Docker不支持Fedora 32开箱即用(必须更改 /etc/yum.repos.d中的回购设置才能使其正常工作-必须使用Fedora 31的回购)。所以我决定开发一个Ubuntu 20.0.4虚拟机并在那里测试它。现在PHP-FPM和Nginx正在交谈;我从PHP-FPM容器得到响应!然而,现在即使只有基本的脚本,我也会得到404错误,但这离我需要的地方更近了...现在来修复404。
确切的错误是:
[错误] 30#30:*1 FastCGI在stderr中发送:"主脚本未知",同时从上游读取响应头
能否检查php fpm服务是否正在运行?问题可能是php fpm服务未运行,因此nginx无法连接到它
最终更新(答案)对于任何遇到此问题的人,截至今天,Docker没有使用Fedora 32(某些部分使用)。至少在我有时间进行故障排除/修补时没有。这是一款全新的Fedora 32,没有安装docker/docker compose或任何东西。
我换了新的Fedora31和Ubuntu 20.0。4只是为了验证我的“结论”。两者都是开箱即用,没有额外的调整。
使用OpenSUSE v15.2, Apache. 使用zypper安装了PHP-FPM。遵循本网站上的说明:https://en.opensuse.org/SDB:Apache_FastCGI_and_PHP-FPM_配置 我重新启动了Apache和PHP-FPM。但是,网站未加载到浏览器中。 我得到HTTP错误502。 #####################################
所以我的docker设置如下:我有一个接受HTTP请求的Nginx容器,我有另一个容器(我的自定义容器),其中有php-fpm和我的应用程序代码。应用程序代码不在主机上,只在Web容器中。 我想将Nginx配置为一个代理,以获取请求并将它们路由到phpfpm。 我的nginx确认如下(我删除了一些不重要的部分): 我的docker配置(同样,我删除了一些不重要的部分) 通过这种配置,我得到了以下N
项目的吉特回购:https://github.com/tombusby/docker-laravel-experiments(撰写本文时的标题为823fd22)。 这是我的码头工人。yml: 我创建了一个新的laravel项目。如果我把index.php换成一个基本的回声“你好世界”;,如果我使用回声“称为”;退出();,我可以识别laravel的index.php确实会被处决。 它死在第53行:
我花了几个小时在这个问题上,尽管相关帖子很多,但我无法解决它。我有一个Fedora 20盒与Nginx PHP-FPM,直到今天工作得很好(在我重新加载php-fpm.service我猜)。Nginx提供的静态文件没有问题,但是任何PHP文件都会触发错误403。 权限正常,nginx和php fpm在用户“nginx”下运行: 服务的文件也被设置为nginx用户,我甚至结束了chmoding 77
centos7虚拟机docker容器中的php-fpm不能解析宿主机中的nginx的php脚本请求? 只有php安装在docker中,nginx、mysql安装在虚拟机中。 docker创建php容器 docker run -d --name php-fpm \ -v /usr/local/nginx/html:/var/www/html \ -v /docker/php/conf/www.con
我需要升级一些仍然运行PHP5.6的非常旧的PHP站点,因为我有其他运行PHP7和PHP8的站点,我想我应该利用Docker来实现这一点。 我使用的是hub的默认Docker PHP-FPM和Nginx图像。码头工人。通用域名格式。 我在Ubuntu20下的Docker for Windows和WSL2上运行这个。如果您也在Windows 10上,下面是我能找到的关于使用Docker for PH