繁体   English   中英

Nginx 和 PHP:没有写权限

[英]Nginx and PHP: no write permissions

我在 Ngnix 上运行的 PHP 应用程序 (Baikal) 有问题。 应用程序对其配置文件之一没有(不再)写入权限。 问题可能是升级 PHP 后出现的。

以下是有关我的设置的一些信息:

  • 操作系统:Arch Linux
  • Nginx 版本:1.16.1
  • Nginx 用户:http
  • PHP 版本:7.4.1
  • 应用:贝加尔湖 0.4.6
  • Nginx 配置:
    server {
       listen              443 ssl http2;
       listen              [::]:443 ssl http2;
       server_name         –––––––––;
       root                /usr/share/webapps/baikal/html;
       index               index.php;
       include             include/ssl.conf;
       include             include/letsencrypt.conf;

       rewrite ^/.well-known/caldav /dav.php redirect;
       rewrite ^/.well-known/carddav /dav.php redirect;
       charset utf-8;

       location ~ /(\.ht|Core|Specific) {
          deny all;
          return 404;
       }

       location ~ ^(.+\.php)(.*)$ {
          try_files $fastcgi_script_name =404;
          include        /etc/nginx/fastcgi_params;
          fastcgi_split_path_info  ^(.+\.php)(.*)$;
          fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
          fastcgi_param  PATH_INFO        $fastcgi_path_info;
       }
    }

应用程序报告文件Specific/config.php不可写。 完整路径是/usr/share/webapps/baikal/Specific/config.php
出于测试目的,我已将文件的权限设置为 777; 没有成功。 我测试了 PHP 函数is_writable 它为该文件返回false fopen表示文件系统是只读的(不是)。

我已经阅读了很多关于防止写操作的 SELinux,但正如我所说,我使用的是 Arch Linux,它不是 SELinux。
我认为这与PHP不允许在Nginx中设置的根目录之外写入这一事实有关,但我无法修复它。

有人可以帮忙吗?
非常感谢

好的,搞定了。 座位。

从 PHP 7.4 开始,PHP-FPM 通过以只读方式挂载/usr/boot/etc目录来保护系统。

这篇文章和这个问题让我找到了将应用程序文件夹移到/usr之外的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM