我在CentOS5机器上安装了带有PHP-FPM的nginx,但是我很难让它为我的任何文件服务--不管是不是PHP.

Nginx以www-data:www-data的形式运行,默认的"欢迎来到Nginx-on-EPEL"站点(由root:root拥有644权限)可以正常加载.

nginx配置文件有一个include指令,用于启用/etc/nginx/sites/*.conf,和我有一个配置文件example.com.conf,因此:

server {
 listen 80;

 Virtual Host Name
 server_name www.example.com example.com;


 location / {
   root /home/demo/sites/example.com/public_html;
   index index.php index.htm index.html;
 }

 location ~ \.php$ {
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  PATH_INFO $fastcgi_script_name;
  fastcgi_param  SCRIPT_FILENAME  /home/demo/sites/example.com/public_html$fastcgi_script_name;
  include        fastcgi_params;
 }
}

尽管public_html由www-data:www-data拥有2777个文件权限,但此站点无法提供任何内容-

 [error] 4167#0: *4 open() "/home/demo/sites/example.com/public_html/index.html" failed (13: Permission denied), client: XX.XXX.XXX.XX, server: www.example.com, request: "GET /index.html HTTP/1.1", host: "www.example.com"

我还发现了许多其他帖子,其中用户从nginx获得403,但我看到的大多数帖子要么涉及Ruby/Passenger的更复杂的设置(在过go ,我实际上已经成功地使用了Ruby/Passenger),要么只在涉及upstream PHP-FPM时收到错误,所以它们似乎没有什么帮助.

我是不是做了什么蠢事?

推荐答案

一个经常被忽视的权限要求是,用户需要文件的每个父目录中的x个权限才能访问该文件.判断www-data x访问的/、/home、/home/demo等权限.我猜测/home可能是770,www-data无法通过它来找到任何子目录.如果是,请try chmod o+x/home(或拒绝请求的任何目录).

编辑:要轻松显示路径上的所有权限,可以使用namei -om /path/to/check

Php相关问答推荐

提交表格后的重定向不起作用

Laravel 10查询中的多个where子句

在WooCommerce中处理客户总支出中的退款

WooCommerce在store 页面上显示兼容多语言的产品属性

仅在WooCommerce管理订单视图上显示订单项自定义元数据

Laravel路由到控制器传输变量解决方案需要

在WooCommerce管理中为订单项目添加自定义字段价格值

Woocommerce单一产品Ajax添加到带有自定义购物车项目数据的购物车

隐藏WooCommerce管理子菜单;主页;来自store 经理

如何在其他数组php中创建具有关联数组的数组

使用简码在 WooCommerce 我的帐户中显示一些用户数据

使用产品自定义字段作为 WooCommerce 中特定用户角色的折扣百分比

在shopware 6.5上可以使用什么事件来判断刚刚支付的订单的状态

CodeIgniter 4中嵌套过滤器组不起作用

设置GA4 PHP API的setSubject以允许访问所有管理员账户属性

在WooCommerce我的账户单个订单页面中添加订单商品部分和按钮

在帖子内容中使用短代码触发 Woocommerce 挂钩

Docker: unixodbc.h 没有这样的文件或目录.已安装 unixodbc-dev 时出现pecl install sqlsrv错误

列表不在 GROUP BY 子句中并且包含 X2CRM 中的非聚合列

在全局安装 Composer 包后运行命令