如何解决move_uploaded_file 给出“无法打开流:权限被拒绝”错误
这是因为images
并且tmp_file_upload
只能由root
用户写入。为了上传工作,我们需要使这些文件夹的所有者与 httpd
进程所有者相同,或者使它们全局可写(不好的做法)。
- 检查 apache 进程所有者:
$ps aux | grep httpd
. 第一列通常是所有者nobody
-
更改所有者
images
并tmp_file_upload
成为nobody
您在步骤 1 中找到的任何所有者。$sudo chown nobody /var/www/html/mysite/images/
$sudo chown nobody /var/www/html/mysite/tmp_file_upload/
-
Chmod
images
现在tmp_file_upload
可以由所有者写入,如果需要的话[似乎你已经有了这个]。在@Dmitry Teplyakov 的回答中提到。$ sudo chmod -R 0755 /var/www/html/mysite/images/
$ sudo chmod -R 0755 /var/www/html/mysite/tmp_file_upload/
-
有关此行为发生原因的更多详细信息,请查看手册http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir,注意它还涉及
open_basedir
指令。
解决方法
尝试在 CentOS 上使用 Apache 2.2 和 PHP 5.3 配置上传目录时,我不断收到此错误。
在 php.ini 中:
upload_tmp_dir = /var/www/html/mysite/tmp_file_upload/
在 httpd.conf 中:
Directory /var/www/html/mysite/tmp_file_upload/>
Options -Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/html/mysite/images/>
Options -Indexes
</Directory>
CentOS 目录权限:
drwxrwxr-x 2 root root 4096 Nov 11 10:01 images
drwxr-xr-x 2 root root 4096 Nov 12 04:54 tmp_file_upload
无论我做什么,当我上传文件时,我都会从 PHP 收到这个错误:
警告:move_uploaded_file(images/robot.jpg):无法打开流:第 78 行
/var/www/html/mysite/process.php 中的权限被拒绝警告:move_uploaded_file(): Unable to move ‘/tmp/phpsKD2Qm’ to
‘images/robot.jpg’ in /var/www/html/mysite/process.php on line 78
如您所见,它从未从 php.ini 文件中获取有关上传文件的配置。
我在这里做错了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。