nginx – Невозможно открыть основной скрипт

Я получил сообщение об ошибке:

FastCGI sent in stderr: "Unable to open primary script: /home/messi/web/wordpress/index.php (No such file or directory)" while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: www.domain.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "www.domain.com

here are my configuration files:

/etc/php5/fpm/php.ini

 cgi.fix_pathinfo=0 doc_root = user_dir = .... 

/etc/php5/fpm/php-fpm.conf

 [global] pid = /var/run/php5-fpm.pid error_log = /var/log/php5-fpm.log include=/etc/php5/fpm/pool.d/*.conf 

/etc/php5/fpm/pool.d/www.conf

 [www] user = www-data group = www-data listen = /var/run/php5-fpm.sock listen.owner = www-data listen.group = www-data listen.mode = 0666 pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 chdir = / security.limit_extensions = .php .php3 .php4 .php5 php_flag[display_errors] = on php_admin_value[error_log] = /var/log/fpm-php.www.log php_admin_flag[log_errors] = on 

/etc/nginx/nginx.conf

 user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; server_tokens off; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/sites-enabled/*; } 

/ и т.д. / Nginx / сайты с поддержкой / WordPress

 server { listen 80; server_name www.domain.com; root /home/messi/web/wordpress; error_log /var/log/nginx/err.wordpress.log; index index.php; location / { try_files $uri $uri/ /index.php?$args; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /\. { deny all; } location ~* /(?:uploads|files)/.*\.php$ { deny all; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } } 

Настройка разрешения пользователя:

 #adduser www-data messi #chown -R www-data:www-data /home/messi/web #chmod -R 664 /home/messi/web/wordpress 

Как я могу это решить? благодаря

Related of "nginx – Невозможно открыть основной скрипт"

SELinux вызовет эту ошибку для CentOS / RHEL 7+ по умолчанию 🙁

Чтобы проверить, является ли SELinux источником ваших проблем, сделайте

 setenforce 0 

… и посмотреть, все ли работает. Если это исправлено, вы можете оставить SELinux выключенным (слабым, вы лучше этого), или вы можете включить его обратно с помощью

 setenforce 1 

… и затем правильно исправить проблему.

Если вы это сделаете

 tail -f /var/log/audit/audit.log 

… вы увидите проблему SELinux. В моем случае было отказано в доступе PHP-FPM к веб-файлам. Вы можете запустить следующие директивы, чтобы исправить это:

 setsebool -P httpd_can_network_connect_db 1 setsebool -P httpd_can_network_connect 1 

Это на самом деле не исправило это для меня сначала, но затем восстановление контекста SELinux сделало это

 restorecon -R -v /var/www 

Надеюсь, это поможет.

Вероятно, это проблема с разрешениями.

  1. Убедитесь, что у каждого родительского каталога есть + x разрешения для пользователя (пользователь nginx и / или php-fpm пользователь).

    Вы можете проверить эти разрешения с помощью: namei -om /path/to/file .

  2. Если у вас есть символические ссылки, убедитесь, что они указывают на допустимый путь.

  3. Удостоверьтесь, что хосты имеют доступ к правильным дорожкам.

  4. Убедитесь, что SELinux (например, Fedora / Centos) или AppArmor (например, Ubuntu) или любые другие системы безопасности MAC не мешают доступу к файлу.

    Для SeLinux: проверьте /var/log/audit/audit.log или / var / log / messages

    Для AppArmor: я не пользователь Ubuntu, и насколько я понимаю, ведение журнала для AppArmor не всегда легко понять. Вы можете проверить здесь информацию: http://ubuntuforums.org/showthread.php?t=1733231

 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; -> fastcgi_param SCRIPT_FILENAME/home/messi/web/wordpress$fastcgi_script_name;