Я работаю в новой среде 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, поэтому, возможно, некоторые команды недоступны.
Вот контрольный список php-fpm, который я использую.
Убедитесь, что php-fpm установлен и запущен
sudo systemctl status php-fpm
Проверьте директиву listen
в конфигурации php-fpm
sudo cat /etc/php-fpm.d/www.conf | grep -Ei '^ слушать'
и убедитесь, что директива listen соответствует восходящему потоку, который вы установили в конфигурации nginx.
Если вы используете сокеты unix, убедитесь, что сокет доступен для чтения / записи пользователем php-fpm (пользователь php-fpm установлен директивами user
и group
в www.conf). Если вы используете сокет TCP / IP, убедитесь, что php-fpm прослушивает порт с помощью:
sudo lsof -i: 9000 # или любого другого номера порта, который вы указали.
Попробуйте удалить http2 из раздела «прослушивание» в конфигурации виртуального хоста и посмотрите, работает ли он.
Была аналогичная проблема, когда nginx был некорректно скомпилирован с OpenSSL 1.0.2.
Мне помогло добавить ? $ Query_string
в конец /index.php, как показано ниже:
location / {
try_files $uri $uri/ /index.php?$query_string;
}