PHP-FPM 容器无法解释来自 HTTPD 容器的 PHP 代码

问题描述 投票:0回答:1

我输入了一个 compose 文件,它像网络服务器一样运行 httpd, nginx 就像 httpd 的代理, 和 php-fpm 就像 *.php 文件解释器。

当我在浏览器上打开 localhost 时,我可以查看 /var/www/html 上的文件, 但是当我尝试打开任何 php 文件时, 我只看到 php 代码。

php-fpm 于 9000 启动, 我通过运行检查它

nmap -p 9000 php

从另一个 httpd 容器, 检查端口返回肯定消息。

我的 HTTPD conf 文件包含以下行:

    <FilesMatch \.php$>
        SetHandler "proxy:fcgi://php:9000"
    </FilesMatch>

我的自定义 httpd conf 文件:

文档根目录 /var/www/html 服务器名称 page.com

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://php:9000"
</FilesMatch>

<Directory "/var/www/html">
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
</Directory>
php docker apache nginx docker-compose
1个回答
0
投票

看到您的

docker-compose.yml
将会很有用。不过,这里有一个可用于入门的工作设置。我仅将此堆栈与两个服务一起使用:NGINX 和 PHP/FPM。

🗎

docker-compose.yml

services:
  nginx:
    image: nginx:1.25
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - ./default.conf:/etc/nginx/conf.d/default.conf
      - ./app:/var/www/html
    depends_on:
      - php

  php:
    image: php:8.3-fpm
    container_name: php
    volumes:
      - ./app:/var/www/html

使用以下卷安装:

  • ./app:/var/www/html
    上的
    php
    服务,以便 PHP/FPM 可以在 PHP 文件上运行;
  • ./app:/var/www/html
    上的
    nginx
    服务用于提供静态文件;和
  • ./default.conf:/etc/nginx/conf.d/default.conf
    用于 NGINX 配置的
    nginx
    服务。

🗎

default.conf

server {
    listen 80;
    server_name localhost 127.0.0.1;

    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

这会建立一个从端口 80 到在端口 9000 上运行的 PHP 服务的反向代理。

├── app
│   ├── index.php
│   └── static.html
├── default.conf
└── docker-compose.yml

🗎

index.php

<?php
echo "Hello from PHP!";

🗎

static.html

<!DOCTYPE html>
<html>
<head>
    <title>Static File</title>
</head>
<body>
    <h1>Hello from a Static File!</h1>
</body>
</html>

© www.soinside.com 2019 - 2024. All rights reserved.