
Я получаю ошибку «FastCGI отправлено в stderr: «Невозможно открыть основной скрипт: /var/www/mediawiki/index.php (Нет такого файла или каталога)»», когда я ввожу свой вики-адрес в строку браузера. Вот мой файл www.conf PHP-FPM:
[www]
user = nginx
group = nginx
listen = /var/run/php/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
;chroot =
;chdir =
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_value[soap.wsdl_cache_dir] = /var/lib/php/wsdlcache
php_value[opcache.file_cache] = /var/lib/php/opcache
Вот мой файл nginx conf.d:
# HTTP requests will be redirected to HTTPS
server {
listen 80;
listen [::]:80;
server_name wiki.example.com;
return 301 https://$host$request_uri;
}
# HTTPS Configuration
server {
listen 443 ssl;
listen [::]:443;
server_name wiki.example.com;
root /var/www/mediawiki;
index index.php;
autoindex off;
# SSL Certification Configuration
ssl_certificate
/etc/letsencrypt/live/wiki.example.com/fullchain.pem;
ssl_certificate_key
/etc/letsencrypt/live/wiki.example.com/privkey.pem;
client_max_body_size 5m;
client_body_timeout 60;
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?title=$1&$args;
}
location ^~ /maintenance/ {
return 403;
}
#PHP-FPM Configuration NGINX
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
try_files $uri /index.php;
expires max;
log_not_found off;
}
location = /_.gif {
expires max;
empty_gif;
}
location ^~
^/(cache|includes|maintenance|languages|serialized|tests|images/deleted)/ {
deny all;
}
location ^~ ^/(bin|docs|extensions|includes|maintenance|mw-
config|resources|serialized|tests)/ {
internal;
}
# Security for 'image' directory
location ~* images/.*.(html|htm|shtml|php)$ {
allow all;
types {}
default_type text/plain;
}
# Security for 'image' directory
location ^~ /images/ {
allow all;
try_files $uri /index.php;
}
}
Мне кажется, что это проблема с разрешениями или демон php-fpm ищет избыточный путь к файлу или что-то в этом роде. Я попробовал передать абсолютный путь к FPM через файл nginx conf.d, выполнив:
fastcgi_param SCRIPT_FILENAME /var/www/mediawiki/index.php;
безрезультатно. Так что я знаю, что указываю ему правильное направление, но он все равно выдает мне ту же ошибку, которая заставляет меня думать, что у меня проблема с разрешениями. Я также пробовал:
setenforce 0
но это тоже не работает. Я установил chmod 777 на весь каталог вплоть до файла index.php.
Немного предыстории:
Я хотел установить расширение wikimedia, которое требовало новой версии php (7.0+), а я использовал 5.4, так как он шел с базовой установкой CentOS 7. Я не был знаком с тем, как обновлять PHP, поэтому я случайно yum remove php*, установил php73 из remi, удалил его, переустановил php 5.4 и, наконец, понял, что я могу yum update с включенным remi-php71.repo обновить мои базовые пакеты. Однако в этом процессе я потерял файлы .conf и php.ini.
Редактировать:
/var/log/nginx/error.log при заходе на свой сайт в браузере:
2019/01/22 16:58:19 [error] 10876#0: *1 FastCGI sent in stderr: "Unable to
open primary script: /var/www/mediawiki/index.php (No such file or
directory)" while reading response header from upstream, client:
10.11.190.1, server: wiki.example.com, request: "GET / HTTP/1.1",
upstream: "fastcgi://unix:/var/run/php/php-fpm/php-fpm.sock:", host:
"wiki.example.com"
/var/log/php-fpm/www-access.log:
- 22/Jan/2019:16:58:19 -0700 "GET /index.php" 404
/var/www/mediawiki/index.php /var/www/mediawiki /index.php /index.php
решение1
Я исправил это, спасибо Кристоферу за то, что он указал мне правильное направление своим вопросом cgi.fix_pathinfo=0
оphp.ini.
Его конкретный вопрос не решил проблему, но я продолжил экспериментировать с настройками рядом cgi.fix_pathinfo=0
сphp.iniи смог получить другое сообщение об ошибке БЕЗ ошибки от PHP-FPM, жалующегося на невозможность открыть /var/www/mediawiki/index.php
.
Мне потребовалось целых 5 дней, чтобы решить эту проблему. Я ОЧЕНЬ ценю помощь, Кристофер!
Я закончил комментировать следующие строки вphp.ini:
;cgi.fixpathinfo=0
;user_dir=/var/www/mediawiki **This is the one that changed the error message
После того, как я это сделал, у меня появилась InvalidArgumentException
ошибка, которая возникла из-за того, что я не установил ее php-mysqlnd
при обновлении с 5.4 > 7.1.
Как только я это установил, бац, вики снова заработала.
Мне хочется обежать вокруг здания пять раз. Еще раз спасибо Кристоферу за то, что указал мне правильное направление!
Иордания