PHP-FPM: nginx/error.log에서 "해당 파일이나 디렉터리가 없습니다" 오류가 발생했습니다. 경로 또는 권한 문제가 있습니까? [폐쇄]

PHP-FPM: nginx/error.log에서 "해당 파일이나 디렉터리가 없습니다" 오류가 발생했습니다. 경로 또는 권한 문제가 있습니까? [폐쇄]

브라우저 표시줄에 위키 주소를 입력하면 "FastCGI sent on stderr: "Cannot open main script: /var/www/mediawiki/index.php (No such file or Directory)" 오류가 발생합니다. 이것은 내 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를 활성화하고 yum 업데이트를 하면 업데이트가 가능하다는 것을 알게 되었습니다. 기본 패키지. 그러나 그 과정에서 .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.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

변경한 후에는 5.4 > 7.1로 업그레이드했을 때 설치되지 않은 InvalidArgumentException항목이 발생했습니다 .php-mysqlnd

일단 설치하자, 맙소사, 위키가 백업되어 실행되었습니다.

건물 안을 다섯 바퀴 돌아보고 싶어요. 나에게 올바른 방향을 알려준 Christopher에게 다시 한 번 감사드립니다!

요르단

관련 정보