尝试在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
Warning: move_uploaded_file(images/robot.jpg): Failed to open stream: Permission denied in /var/www/html/mysite/process.PHP on line 78
Warning: move_uploaded_file(): Unable to move ‘/tmp/PHPsKD2Qm’ to ‘images/robot.jpg’ in /var/www/html/mysite/process.PHP on line 78
正如您所看到的,它从未从PHP.ini文件中获取有关上载文件的配置.
我在这做错了什么?
解决方法:
这是因为images和tmp_file_upload只能由root用户写入.要上传到工作,我们需要使这些文件夹的所有者与httpd进程所有者相同或使它们全局可写(不良做法).
>检查apache进程所有者:$ps aux | grep httpd.第一列将是所有者,通常它将是无人
>将图像的所有者和tmp_file_upload更改为无人或您在步骤1中找到的所有者.
$sudo chown nobody /var/www/html/mysite/images/
$sudo chown nobody /var/www/html/mysite/tmp_file_upload/
>如果需要,Chmod图像和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指令.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。