Я нашел похожий вопрос здесь: Nginx служит для загрузки файлов .php вместо их выполнения Но, к сожалению, ответ там мне не помогает. Итак, моя история.
Что работает
Когда я перехожу к myipaddress / index.html, страница приветствия nginx отображается правильно.
Когда я перехожу к myipaddress / widgets / index.html, страница приветствия nginx отображается правильно. NB. Я немного изменил этот index.html из приведенного выше, поэтому приветственное сообщение отличается. Таким образом, я докажу себе, что он действительно находит две разные структуры файла / папки index.html.
Что не работает
Когда я перехожу к myipaddress / widgets / info.php, вместо того, чтобы показывать детали команды phpinfo (), она загружает файл php.
Установленные пакеты
Я использую alpinelinux. Установлены следующие пакеты:
lab-1:/var/www/localhost/htdocs# cat /etc/apk/world
curl
nginx
php7-common
php7-fpm
Версия Nginx
lab-1:/etc/php7# nginx -v
nginx version: nginx/1.14.0
гс-статус
lab-1:/var/www/localhost/htdocs# rc-status
Dynamic Runlevel: manual
nginx [ started ]
php-fpm7 [ started ]
Структура папок
lab-1:/var/www/localhost/htdocs# ls -lah
total 16
drwxr-xr-x 3 www www 4.0K Sep 13 14:22 .
drwxr-xr-x 3 www www 4.0K Sep 13 13:17 ..
-rw-r--r-- 1 www www 624 Sep 12 20:35 index.html
drwxr-xr-x 2 www www 4.0K Sep 13 17:40 widgets
lab-1:/var/www/localhost/htdocs# ls -lah widgets/
total 16
drwxr-xr-x 2 www www 4.0K Sep 13 17:40 .
drwxr-xr-x 3 www www 4.0K Sep 13 14:22 ..
-rw-r--r-- 1 root root 632 Sep 13 14:23 index.html
-rwxr-xr-x 1 www www 27 Sep 13 15:45 info.php
Файлы конфигурации
netstat для подтверждения запуска php fpm
lab-1:/etc/php7# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 4268/php-fpm.conf)
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4323/nginx.conf
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 346/sshd
tcp 0 0 :::80 :::* LISTEN 4323/nginx.conf
tcp 0 0 :::22 :::* LISTEN 346/sshd
пс -А
4268 root 0:00 {php-fpm7} php-fpm: master process (/etc/php7/php-fpm.conf)
4275 nginx 0:00 {php-fpm7} php-fpm: pool www
4276 nginx 0:00 {php-fpm7} php-fpm: pool www
4323 root 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
4324 nginx 0:00 nginx: worker process
4325 nginx 0:00 nginx: worker process
4326 nginx 0:00 nginx: worker process
4328 nginx 0:00 nginx: worker process
4329 nginx 0:00 nginx: worker process
4330 nginx 0:00 nginx: worker process
4331 nginx 0:00 nginx: worker process
4332 nginx 0:00 nginx: worker process
Комментарии
Я пытался убедиться, что владельцем прослушивания и группой прослушивания является тот же пользователь, с которым работает nginx, то есть «nginx».
Также я знаю, что использование "127.0.0.1:9000" не так хорошо, как использование сокета Unix. Но сейчас я пытаюсь использовать параметры установки по умолчанию для php7-fpm.
(По правде говоря, я тоже не знаю, как это изменить)
Вопросы
- Вы видите, где я ошибся?
- Доказывает ли тот факт, что он загружает php-файл, что он находит директиву location в нужном conf-файле? поэтому проблема ограничена содержимым моей директивы location {} в файле widgets.conf?
- Как только я исправлю проблему с php, если в моей настройке есть действительно огромные ошибки, которые вы можете увидеть, можете ли вы указать на них? Благодарю.
РЕДАКТИРОВАТЬ 1
Я установил curl на свою машину и попытался сделать это:
lab-1:/etc/php7# curl http://10.11.11.1111/widgets/info.php
<?php
phpinfo();
?>
против этого:
lab-1:/etc/php7# curl http://widgets/index.html
curl: (6) Could not resolve host: widgets
Но я не совсем знаю, как это исправить. Я хочу, чтобы система всегда требовала указывать IP-адрес, а затем имя папки / приложения.