我已经在各种机器上使用自己创建的设置好几年了,现在我正尝试在 Debian 12 服务器上运行它。该设置类似于 Forge,可在此 URL 上找到https://serversforhackers.com/c/lemp-forge-setup。以前一切都运行正常,但现在我在新机器上遇到了问题。
如果我将 PHP 用户保留为 www-data 并将项目保留在 中var/www
,则不会出现问题。但是,当我将其移动到主目录 时/home/forge/hutzlibu
,我看到 中有一个错误日志条目,/var/log/nginx/error.log
内容如下:
"/home/forge/hutzlibu/public/index.php" failed (13: Permission denied), client: , server: _, request: "GET /.
我尝试将 PHP 配置中的 listen.owner 和 listen.group 更改为 forge,但没有成功。我发现其他人也在这个 URL 上遇到了类似的问题https://stackoverflow.com/a/58902001/1518174。
有人知道如何解决这个问题吗?提前谢谢您!
谨致问候,Matz
编辑:评论中问题的一些输出
namei -l /home/forge/hutzlibu/public/
给了我
f: /home/forge/hutzlibu/public/
drwxr-xr-x root root /
drwxr-xr-x root root home
drwx-----x forge forge forge
drwxr-xr-x forge forge hutzlibu
drwxr-xr-x forge forge public
Nginx 配置
server {
listen 80;
root /home/forge/hutzlibu/public;
server_name _;
client_max_body_size 100M;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
仅在 PHP-FPM 配置文件中发生更改/etc/php/7.4/fpm/pool.d/www.conf
user = forge
group = forge
# also tried with
# listen.owner = forge
# listen.group = forge
答案1
尝试设置
listen.owner = www-data
user = forge
group = forge
对于 php-fpm。并确认在 nginx.conf 中您有user www-data;
我还为每个人添加了对 /home/forge 的读取权限。这可能(也可能没)有帮助。