ede*_*ter 12 nginx php-fpm amazon-ec2
我阅读了几篇关于为什么 PHP-FPM 可能会拒绝我的权限但我无法解决它的条目。
错误日志如下:
2013/04/20 23:33:28 [crit] 15479#0: *6 open() "/var/lib/nginx/tmp/fastcgi
/2/00/0000000002" failed (13: Permission denied) while reading upstream, client:
99.999.999.999, server: example.net, request: "GET /wp-admin/ HTTP/1.1",
upstream: "fastcgi://unix:/tmp/php-fpm.sock:", host: "example.net", referrer:
"http://example.net/"
Run Code Online (Sandbox Code Playgroud)
我有点但迷路了:
我的 Nginx 配置包括很多文件,基本配置是:
user ec2-user ec2-user;
worker_processes 5;
error_log /opt/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
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 /opt/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
client_max_body_size 13m;
index index.php index.html index.htm;
upstream php {
server unix:/tmp/php-fpm.sock;
}
include /etc/nginx/conf.d/*.conf;
include /mnt/web/nginx/conf.d/*.conf;
}
Run Code Online (Sandbox Code Playgroud)
我的 /etc/nginx/conf.d/ 是空的我的 /mnt/web/nginx/conf.d 包含很多网站配置,其中都包括“wordpress.conf”:
location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 24h;
log_not_found off;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php;
}
Run Code Online (Sandbox Code Playgroud)
我的/opt/php/etc/php-fpm.conf:
include=/opt/php/etc/fpm.d/*.conf
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php-fpm.sock
user = ec2-user
group = ec2-user
pm = dynamic
pm.max_children = 250
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
pm.status_path = /fpm-status
ping.path = /fpm-ping
slowlog = log/$pool.log.slow
catch_workers_output = yes
Run Code Online (Sandbox Code Playgroud)
更新:发现问题,把它放在答案中
ede*_*ter 20
我已将 /var/lib/nginx/ tmp 设置为 ec2-user/ec2-user(我什至 +777 检查所有内容)
但是......我还必须将 /var/lib/ nginx 设置为 ec2-user/ec2-user
...在 chown/chgrp 父 nginx 文件夹之后:没有更多错误。
花了我几个小时...
nu *_*est 13
这通常会发生。当user
nginx.conf 中的设置从
user nginx;
Run Code Online (Sandbox Code Playgroud)
到别的东西。在这种情况下,
user ec2-user ec2-user;
Run Code Online (Sandbox Code Playgroud)
根据 Chris 的评论,chmod 命令不是必需的,并且可能会打开一个安全漏洞。
解决方案:
检查 /var/lib/nginx 上的当前用户和组所有权。
$ ls -ld /var/lib/nginx
drwx------ 3 nginx nginx 4096 Aug 5 00:05 /var/lib/nginx
Run Code Online (Sandbox Code Playgroud)
这告诉您可能不存在的用户和名为的组nginx
拥有此文件夹。这可以防止文件上传。
在这种情况下,将文件夹所有权更改为 nginx.conf 中定义的用户ec2-user
(可能不需要 sudo)。
$ sudo chown -Rf ec2-user:ec2-user /var/lib/nginx
Run Code Online (Sandbox Code Playgroud)
验证它确实发生了变化。
$ ls -ld /var/lib/nginx
drwx------ 3 ec2-user ec2-user 4096 Aug 5 00:05 /var/lib/nginx
Run Code Online (Sandbox Code Playgroud)
权限被拒绝错误现在应该消失了。检查 error.log(基于 nginx.conf error_log 位置)。
$ sudo nano /opt/nginx/error.log
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,您可能需要重新加载 nginx 和 php-fpm。
$ sudo service nginx reload
$ sudo service php-fpm reload
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30902 次 |
最近记录: |