Вопрос или проблема
Я пытаюсь установить phpBB на своем Pi.
Это основной адрес сайта установки:
192.168.178.62/phpBB3/install/app.php
Это URL, на который он пытается перейти:
http://192.168.178.62/phpBB3/install/app.php/install
Что возвращает ошибку 404. Это происходит со всеми внутренними ссылками, такими как поддержка или лицензия.
Моя конфигурация nginx:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html info.php;
server_name 192.168.178.62;
error_page 404 /404.html;
location / {
try_files $uri $uri/ =404;
}
location /pad/ {
proxy_pass http://192.168.178.62:9001/;
}
location /chat {
proxy_pass http://192.168.178.62:3002/;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Файл fastcgi-php.conf находится в /etc/nginx/snippets, и его содержимое следующее:
# регулярное выражение для разделения $uri на $fastcgi_script_name и $fastcgi_path
fastcgi_split_path_info ^(.+?.php)(/.*)$;
# Проверьте, что PHP-скрипт существует перед передачей его
try_files $fastcgi_script_name =404;
# Обойдите тот факт, что try_files сбрасывает $fastcgi_path_info
# см.: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi.conf;
У меня была такая же проблема, я начал устанавливать phpBB, и вкладка УСТАНОВКА выдала “ошибку 404”, это исправило конфигурацию nginx:
“Попробуйте изменить location ~ .php$ на location ~ .php($|/)”
Ответ или решение
Проблема с PHP-ссылками в Nginx: Решение ошибок 404 при установке phpBB
Введение
Установка phpBB на сервере с Nginx может вызвать определенные проблемы, особенно когда дело касается обработки ссылок и вызовов PHP-скриптов. Одной из наиболее распространенных ошибок является ошибка 404, которая возникает, когда ссылки на внутренние страницы не работают должным образом. В этой статье мы рассмотрим основные причины возникновения этой проблемы и предложим эффективные решения.
Описание проблемы
При установке phpBB вы сталкиваетесь с ситуацией, когда ссылки, ведущие на страницы, такие как http://192.168.178.62/phpBB3/install/app.php/install
, возвращают ошибку 404. Это происходит из-за неправильного конфигурирования Nginx. Давайте подробно разберем ваш конфигурационный файл Nginx и предложим необходимые изменения.
Анализ конфигурации Nginx
Вы предоставили следующий фрагмент конфигурации:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html info.php;
server_name 192.168.178.62;
error_page 404 /404.html;
location / {
try_files $uri $uri/ =404;
}
location /pad/ {
proxy_pass http://192.168.178.62:9001/;
}
location /chat {
proxy_pass http://192.168.178.62:3002/;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Проблема с попыткой обработки PHP
Сейчас конфигурация location ~ \.php$
может обрабатывать только файлы .php
по запросу, но если в URL-адресе присутствует дополнительный сегмент после названия файла, Nginx может неправильно обрабатывать это и возвращать 404 ошибку. Этот случай типичен для системы управления форумами, как phpBB, где могут быть внутренние вызовы, требующие правильной обработки.
Рекомендации по исправлению
Как вы уже упомянули, одно из решений состоит в изменении строки конфигурации для обработки PHP следующим образом:
location ~ \.php($|/) {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}
Пояснение изменений
-
Подробное сопоставление URL: Шаблон
~ \.php($|/)
позволяет обрабатывать запросы, которые могут содержать дополнительные сегменты или параметры после имени файла PHP. Это гарантирует, что запросы, такие какhttp://192.168.178.62/phpBB3/install/app.php/install
, будут правильно интерпретированы. -
Использование
try_files
: В конфигурацииsnippets/fastcgi-php.conf
, проверьте, что вы используетеtry_files
для проверки существования файла перед передачей его на обработку вPHP-FPM
. Это предотвратит дальнейшие ошибки 404.
После внесения изменений
После изменения конфигурации вам необходимо перезагрузить Nginx, чтобы нововведения вступили в силу. Используйте команду:
sudo systemctl restart nginx
Также не забывайте проверять логи Nginx на предмет ошибок, это может помочь в диагностике дальнейших проблем:
tail -f /var/log/nginx/error.log
Заключение
Следуя указанным рекомендациям, вы сможете устранить проблему с неправильными ссылками и ошибками 404 в phpBB на вашем сервере Nginx. Важно уделить внимание конфигурации, чтобы гарантировать корректную обработку всех запросов. Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью в сообщество поддержки phpBB или к вашему хостинг-провайдеру.