Настроил NGINX+PHP-FPM, но любые запросы обрабатываются с помощью index.php, например есть директория /a/, содержащая различные файлы, даже если в ней есть index.php, то переход по адресу http://test.loc/a/ будет обрабатываться корневым /index.php, который лежит не в указанной директории, а в корне сайта. Только если конкретно указать http://test.loc/a/index.php, тогда будет обработан правильный index.php. Если же попытаться открыть картинку по адресу http://test.loc/IMG.jpg, то даже если картинка существует, запрос будет обработан через корневой /index.php, со всеми другими ресурсами, которые не *.php. Как это починить? Система Manjaro.
# Это код пула
[me]
user = me
group = me
listen = /var/run/php-fpm/jcp370.sock
listen.owner = http
listen.group = http
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
В fastcgi-php.conf уже указан fastcgi_index
# А вот это код виртуального домена
server {
listen 80;
listen [::]:80;
root /home/me/www/jcp370.loc/www;
index index.php index.html;
server_name jcp370.loc;
access_log /home/me/www/jcp370.loc/logs/access.log combined;
error_log /home/me/www/jcp370.loc/logs/error.log warn;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php-fpm/jcp370.sock;
fastcgi_intercept_errors on;
fastcgi_read_timeout 300;
}
}
В access.log на все запросы ответ 200. В error.log
2019/08/20 13:59:39 [crit] 25275#25275: *1 stat() "/home/me/www/jcp370.loc/www/" failed (13: Permission denied), client: 127.0.0.1, server: jcp370.loc, request: "GET / HTTP/1.1", host: "jcp370.loc"
2019/08/20 13:59:42 [crit] 25275#25275: *1 stat() "/home/me/www/jcp370.loc/www/admin" failed (13: Permission denied), client: 127.0.0.1, server: jcp370.loc, request: "GET /administrator HTTP/1.1", host: "jcp370.loc"
2019/08/20 14:07:10 [crit] 25663#25663: *1 stat() "/home/me/www/jcp370.loc/www/ad/" failed (13: Permission denied), client: 127.0.0.1, server: jcp370.loc, request: "GET /ad/ HTTP/1.1", host: "jcp370.loc"
2019/08/20 14:07:14 [crit] 25663#25663: *1 stat() "/home/me/www/jcp370.loc/www/ad/wef" failed (13: Permission denied), client: 127.0.0.1, server: jcp370.loc, request: "GET /ad/wef HTTP/1.1", host: "jcp370.loc"
2019/08/20 14:07:17 [crit] 25663#25663: *1 stat() "/home/me/www/jcp370.loc/www/ad/wef3" failed (13: Permission denied), client: 127.0.0.1, server: jcp370.loc, request: "GET /ad/wef3 HTTP/1.1", host: "jcp370.loc"
2019/08/20 14:10:09 [crit] 25663#25663: *9 stat() "/home/me/www/jcp370.loc/www/wef.png" failed (13: Permission denied), client: 127.0.0.1, server: jcp370.loc, request: "GET /wef.png HTTP/1.1", host: "jcp370.loc"
2019/08/20 14:11:35 [crit] 25663#25663: *11 stat() "/home/me/www/jcp370.loc/www/DSC_9416.jpg" failed (13: Permission denied), client: 127.0.0.1, server: jcp370.loc, request: "GET /DSC_9416.jpg HTTP/1.1", host: "jcp370.loc"
Сейчас на директорию сайта рекурсивно стоят 777 права. Думал хоть так прокатит, нет. Полагаю что накосячил где-то в location / {} но на других серверах у меня всё хорошо с таким конфигом.
Пример файла конфигурации nginx для корректной работы с различными скриптами (не только index.php) в директории проекта:
server {
listen 80;
listen [::]:80 ipv6only=on;
# Log files for Debugging
access_log /var/log/nginx/laravel-access.log;
error_log /var/log/nginx/laravel-error.log;
# Webroot Directory for Laravel project
root /var/www/laravel/public;
index index.php index.html index.htm;
# Your Domain Name
server_name laravel.hakase-labs.co;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# PHP-FPM Configuration Nginx
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Источник
P.S. После изменения конфигурации не забудьте перезапустить nginx.
P.P.S. Конфигурация гарантированно рабочая, т.к. работает как минимум у меня на как минимум 1 машине, точно на скольких - не помню. :)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Данная функция должна возвратить массив с папками БЕЗ использования глобальных переменныхПодскажите, пожалуйста, как это сделать?