我在 WSL2 Ubuntu 服务器上成功运行了 nginx、mariadb 和 php8.2-fpm,所有程序都以用户身份www-data
正常运行,但是,我无法从 Web 界面上传文件。当我尝试上传时,nginx 错误日志记录了以下内容:
2023/05/03 09:27:46 [错误] 1339#1339:*1 FastCGI 在 stderr 中发送:“PHP 消息:未捕获的 PHP 异常 Drupal\Core\File\Exception\FileWriteException:“目标目录‘public://2023-05’不可写”在/var/www/html/repo/web/core/modules/media_library/src/Form/FileUploadForm.php 第 332 行”,同时从上游读取响应标头,客户端:::1,服务器:localhost,请求:“POST /媒体库?media_library_opener_id=media_library.opener.field_widget&media_library_allowed_types%5Bimage%5D=图像&media_library_selected_type=图像&media_library_remaining=1&media_library_opener_parameters%5Bfield_widget_id%5D=field_image&media_library_opener_parameters%5Bentity_type_id%5D=节点&me dia_library_opener_parameters%5Bbundle%5D=article&media_library_opener_parameters%5Bfield_name%5D=field_image&media_library_opener_parameters%5Bentity_id%5D=144&media_library_opener_parameters%5Brevision_id%5D=741&hash=q_RtKmTw2wyucMR1nnKCucBF2P1b1crtsxJDMyk7fW8&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1", 上游:“fastcgi://unix:/var/run/php/php8.2-fpm.sock:”, 主机:“localhost”, 引用:“http://localhost/”
我认为问题可能出在 nginx 和 php8.2-fpm 上,我也成功配置了 apache 以使用 php8.2 运行,并且同样在 Apache 的错误日志中收到此错误:
[2023 年 5 月 3 日星期三 09:28:32.068299] [php:notice] [pid 1195] [client ::1:59860] 未捕获的 PHP 异常 Drupal\Core\File\Exception\FileWriteException:“目标目录‘public://2023-05’不可写”位于 /var/www/html/repo/web/core/modules/media_library/src/Form/FileUploadForm.php 第 332 行,引用者:http://localhost:8080/
nginx、mariadb 和 php-fpm 均以 身份运行,www-data
且文件夹权限均设置为www-data:www-data
( chown -R www-data:www-data ./
),并具有对文件的完全访问权限 ( chmod -R 777 ./
)。
我还将以下内容添加到我的/etc/wsl.conf
文件中:
[automount]
enable = true
root = /mnt/
options = "metadata,umask=22,fmask=11"
mountFsTab = false
PHP 仍然无法写入文件。关于如何处理 Ubuntu WSL 2 实例上的写入权限,您有什么想法吗?
答案1
Drupal 帖子 目录 sites/default/files 存在但不可写入,无法使其可写入 可能与此相关。
这 Ankit Agrawal 的回答 说:
对您来说可能有用的一种方法是更改组并使其成为可写组,如下所示:
chgrp www-data sites/default/files chmod g+w sites/default/files
按照drupal 文档所有文件的正确权限是 644,目录的正确权限是 755。
另请检查:推荐的目录权限是什么?
用您的文件夹替换sites/default/files
。