Descarga de archivos PHP al usar php-fpm y nginx con Docker

Descarga de archivos PHP al usar php-fpm y nginx con Docker

Ya vi otras publicaciones aquí sobre un problema similar, pero creo que la mía necesita una solución diferente porque las otras publicaciones no ayudaron.

Estoy ejecutando dos contenedores separados con Docker: For php-fpmy for nginx. Cuando intento mostrar texto usando index.htmlun archivo, todo está bien, pero cuando cambio el nombre del archivo, index.phpdescarga un archivo de "descarga".

No estoy seguro si es solo por mi default.confarchivo o por cómo configuro mis contenedores.

Este es mi docker-compose.yml:

networks:
    laravel:


services:
    nginx:
        image: nginx:stable-alpine
        container_name: nginx
        ports:
            - "8088:80"
        volumes:
            - ./src:/var/www/html 
            - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
        
        depends_on:
            - php
            - mysql
            
        networks:
            - laravel
        
    
    mysql:
        image: mysql
        container_name: mysql

        tty: true
        ports:
            - "4306:3306"
        volumes:
            - ./src:/var/lib/mysql
        environment:
            MYSQL_DATABASE: laravel
            MYSQL_ROOT_USER: root
            MYSQL_ROOT_PASSWORD: secret
            SERVICE_TAGS: dev
            SERVICE_NAME: mysql            
        
        networks:
            - laravel
          
    
    php:
        build:
            context: .
            dockerfile: Dockerfile
        container_name: php
        volumes:
            - ./src:/var/www/html
        ports:
            - "9000:9000"
        networks:
            - laravel
       

Este es mi default.conf:

server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html/public;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~ \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    
}

Respuesta1

Parece que te falta la parte principal: la fastcgi_passdirectiva para reenviar la solicitud a FPM. Agregue esto en la location ~ \.php$sección:

fastcgi_pass php:9000;

Ver tambiénel ejemplo en la documentación de Nginx.

información relacionada