Nginx загружает «* .php» вместо того, чтобы отображать его содержимое в среде Docker

Я работаю в новой среде Docker, использующей PHP71 + Nginx . Dockerfile наследуется от illion12 / docker-nginx .

Это содержимое /etc/nginx/hosts.d/vhost.conf ( который я взял из здесь ):

server {
    listen      80  default_server;
    listen      81  default_server http2 proxy_protocol; ## Needed when behind HAProxy with SSL termination + HTTP/2 support
    listen      443 default_server ssl http2;

    ssl_certificate       /etc/nginx/ssl/dummy.crt;
    ssl_certificate_key   /etc/nginx/ssl/dummy.key;

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

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    include     /etc/nginx/conf.d/stub-status.conf;
    include     /etc/nginx/conf.d/default-*.conf;
    include     /data/conf/nginx/conf.d/default-*.conf;
}

Я не могу понять, почему файл загружается, а не отображается его содержимое.

Это то, что у меня внутри контейнера: / var / run :

# ls -la /var/run/
total 8
drwxr-xr-x 11 root root 185 Dec 14 21:12 .
drwxr-xr-x 19 root root 299 Dec 14 21:12 ..
drwxr-xr-x  2 root root   6 Sep  5 10:19 blkid
drwxr-xr-x  2 root root   6 Jul 29 14:05 console
drwxr-xr-x  2 root root   6 Jul 29 14:05 faillock
drwxr-xr-x  4 root root  35 Jul 29 14:05 lock
drwxr-xr-x  2 root root   6 Jul 29 14:05 log
-rw-r--r--  1 root root   2 Dec 14 21:12 php-fpm.pid
drwxr-xr-x  2 root root   6 Jul 29 14:05 sepermit
drwxr-xr-x  2 root root   6 Jul 29 14:05 setrans
-rw-r--r--  1 root root   3 Dec 14 21:12 supervisord.pid
drwxr-xr-x  9 root root 113 Jul 29 14:05 systemd
drwxr-xr-x  2 root root   6 Jul 29 14:05 user
-rw-rw-r--  1 root utmp   0 Jul 29 14:05 utmp

Возможно, эта строка:

 fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;

работает неправильно. Измените его на:

fastcgi_pass    php-upstream;

Где php-upstream :

upstream php-upstream {
    server 127.0.0.1:9000;
}

Также не работает. Я застрял на этом этапе. Я проверил все эти сообщения, прежде чем открыть еще один , новый:

Можно Кто-нибудь может помочь мне в этом? Помните, что все это выполняется внутри контейнера Docker, поэтому, возможно, некоторые команды недоступны.

0
задан 23 May 2017 в 15:41
3 ответа

Вот контрольный список php-fpm, который я использую.

  1. Убедитесь, что php-fpm установлен и запущен

     sudo systemctl status php-fpm
     
  2. Проверьте директиву listen в конфигурации php-fpm

     sudo cat /etc/php-fpm.d/www.conf |  grep -Ei '^ слушать'
     

    и убедитесь, что директива listen соответствует восходящему потоку, который вы установили в конфигурации nginx.

  3. Если вы используете сокеты unix, убедитесь, что сокет доступен для чтения / записи пользователем php-fpm (пользователь php-fpm установлен директивами user и group в www.conf). Если вы используете сокет TCP / IP, убедитесь, что php-fpm прослушивает порт с помощью:

     sudo lsof -i: 9000 # или любого другого номера порта, который вы указали.
     
1
ответ дан 4 December 2019 в 16:24

Попробуйте удалить http2 из раздела «прослушивание» в конфигурации виртуального хоста и посмотрите, работает ли он.

Была аналогичная проблема, когда nginx был некорректно скомпилирован с OpenSSL 1.0.2.

0
ответ дан 4 December 2019 в 16:24

Мне помогло добавить ? $ Query_string в конец /index.php, как показано ниже:

location / {
        try_files $uri $uri/ /index.php?$query_string;
}
0
ответ дан 4 December 2019 в 16:24

Теги

Похожие вопросы