
브라우저 표시줄에 위키 주소를 입력하면 "FastCGI sent in stderr: "기본 스크립트를 열 수 없습니다: /var/www/mediawiki/index.php(해당 파일 또는 디렉터리 없음)"" 오류가 발생합니다. 내 PHP-FPM www.conf 파일은 다음과 같습니다.
[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 데몬이 중복 파일 경로 등을 찾고 있는 것 같습니다. 다음을 수행하여 nginx conf.d 파일을 통해 FPM에 절대 경로를 전달하려고 했습니다.
fastcgi_param SCRIPT_FILENAME /var/www/mediawiki/index.php;
소용이 없습니다. 따라서 나는 올바른 방향을 가리키고 있다는 것을 알고 있지만 여전히 권한 문제가 있다고 생각하게 만드는 동일한 오류가 발생합니다. 나는 또한 다음을 시도했습니다.
setenforce 0
하지만 이것도 작동하지 않습니다. 나는 index.php 파일을 포함하여 전체 디렉토리를 chmod 777로 설정했습니다.
일부 배경:
새 버전의 PHP(7.0+)가 필요한 Wikimedia 확장 프로그램을 설치하고 싶었고 CentOS 7의 기본 설치와 함께 제공되었기 때문에 5.4를 실행하고 있었습니다. PHP를 업데이트하는 방법에 익숙하지 않아서 실수로 PHP를 제거했습니다. *, remi에서 php73을 설치하고 이를 제거하고 php 5.4를 다시 설치한 후 마침내 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
문제를 해결했습니다. 질문 에 대한 올바른 방향을 알려준 Christopher에게 감사드립니다.php.ini.
cgi.fix_pathinfo=0
그의 구체적인 질문으로 문제가 해결되지는 않았지만 계속해서 근처 의 설정을 가지고 놀았습니다.php.iniPHP-FPM에서 열 수 없다고 불평하는 NO 오류가 포함된 다른 오류 메시지를 받을 수 있었습니다 /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
이를 변경한 후 5.4 > 7.1로 업그레이드할 때 InvalidArgumentException
설치하지 않았기 때문에 오류가 발생했습니다.php-mysqlnd
설치하고 나면 위키가 다시 시작되어 실행됩니다.
건물 안을 다섯 바퀴 돌아다니는 기분이에요. 나에게 올바른 방향을 알려준 Christopher에게 다시 한 번 감사드립니다!
요르단