Nginx和PHP:没有写权限

问题描述 投票:1回答:1

我在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。该文件返回falsefopen表示文件系统是只读的(不是)。

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

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

php nginx file-permissions
1个回答
1
投票

好的,钉上它。皮尤。

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

[此post和此issue使我想出了将应用程序文件夹移到/usr之外的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.