簡體   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