Я получил сообщение об ошибке:
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
Как я могу это решить? благодаря
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
Надеюсь, это поможет.
Вероятно, это проблема с разрешениями.
Убедитесь, что у каждого родительского каталога есть + x разрешения для пользователя (пользователь nginx и / или php-fpm пользователь).
Вы можете проверить эти разрешения с помощью: namei -om /path/to/file
.
Если у вас есть символические ссылки, убедитесь, что они указывают на допустимый путь.
Удостоверьтесь, что хосты имеют доступ к правильным дорожкам.
Убедитесь, что 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;