0

我最近从 Apache 切换到 Nginx。PHP 语言底层并使用 fastcgi_pass 到 php7.4-fpm 来运行所有脚本文件。一切似乎都运行良好。页面正在运行,PHP 正在执行,所有资产加载正常等。但是我的 nginx 错误日志中充斥着这些错误:

2020/11/19 06:28:52 [crit] 3332114#3332114: *26646323 rename() "/tmp/0012831123" 到 "/opt/www/example/web/controller.php" 失败(13:权限被拒绝)在读取上游时,客户端:104.220.189.242,服务器:www.example.com,请求:“GET /path1/path2/path3/ HTTP/1.1”,上游:“fastcgi://unix:/run/php/php7. 4-fpm.sock:”,主机:“www.example.com”,推荐人:“https://www.example.com/”

我一直在尝试用谷歌搜索一个星期,但什么也没有。尝试查看 nginx 缓存文件等的权限,但没有。我真的被难住了。我不知道为什么某些 tmp 文件会试图重命名为应该可执行的实际文件。这似乎很糟糕,而且有点可怕。

任何有关在哪里寻找的帮助或建议将不胜感激。

干杯!

4

1 回答 1

0

[TLDR] 为了避免其他人像我一样在这方面花费大量时间。有一个配置设置'fastcgi_store',需要设置为'off'。

基本上有一个“fastcgi_store”设置允许将文件或动态生成的文件复制到磁盘。不确定这是用于什么用例,但在我的“..../snippets/fastcgi-php.conf”文件中已启用。考虑到我对 NGINX 相当陌生,我可能从某个地方复制了它,但并没有真正了解它的用途或它的影响。

我认为主要问题是某处权限不正确,无法写入文件。这可能是件好事,因为这些文件会很快填满我的网络服务器磁盘空间。由于我不需要这些文件,我只是禁用了它,并没有进一步研究权限问题。

这是有关此内容的 nginx 文档的链接:http: //nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_store

更改 conf 文件:fastcgi_store off;

于 2020-11-25T18:31:36.887 回答