我在适用于 AWS 的 Red Hat Enterprise Linux (RHEL) 上遇到了 PHP 和 SELinux 的问题。当我使用 _FILES 数组从 POST 获取文件 (jpg)时,当 move_uploaded_file 将文件移动到标准目录中的上传目录时,它使 SELinux 类型成为必要user_tmp_t
的类型。因为从不更改文件上的 SELinux 类型,所以 jpg 文件被禁止使用。我该如何解决这个问题?httpd_sys_content_1
var/www/html/
move_uploaded_file
move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir)
是我正在使用的。
我尝试更改 php.ini sys_upload_dir 和 upload_tmp_dir 但问题仍然存在。我也尝试创建一个新文件夹来存储 tmp 文件并使用sudo semanage fcontext -a -t httpd_sys_content_t "/phptmp(/.*)?"
但仍然无法正常工作。
semanage fcontext -a -t httpd_sys_content_t '/var/www/html(/.*)?'
并且restorecon -R -v /var/www/html/
确实解决了现有文件的问题,但它在未来不起作用,因为 PHPuser_tmp_t
每次都会导致它。
我想使用 SELinux,但这很令人沮丧,因为我真的不知道如何在 PHP 上更改 SELinux 属性。
我知道这是一个 SELinux 问题,因为如果我这样做setenforce 0
可以“解决”问题。