我是一个PHP n00b但按照这个优秀的啧啧遵循说明:
PHP Tizag file upload tutorial
然而,虽然这在我运行默认内置Apache的Mac(OSX 10.8)上运行良好,但它失败并且无法在CentOS 6机箱上运行。浏览Apache日志,我得到了这个:
failed to open stream: No such file or directory
/ var / www / html 根目录下的“uploads”文件夹中的权限已设置为 777 (在Mac上它/ Library /网络服务器/文件)
[Tue Apr 30 13:05:11 2013] [error] [client (My IP Address)] PHP Warning: move_uploaded_file(uploads/Today notes.txt): failed to open stream: No such file or directory in /var/www/html/test/uploads3.php on line 8, referer: ht*p://serverip.myserver.com/test/form4.html
[Tue Apr 30 13:05:11 2013] [error] [client (my IP address)] PHP Warning: move_uploaded_file(): Unable to move '/tmp/phpc8AGo8' to 'uploads/Today notes.txt' in /var/www/html/test/uploads3.php on line 8, referer: ht*p://serverip.myserver.com/test/form4.html
我是否遗漏了PHP或Apache中的某些设置以使其正常工作?
非常感谢提前。
答案 0 :(得分:1)
根据您的问题,uploads
文件夹位于/var/www/html
,但是正在尝试上传到不存在的/var/www/html/test/uploads
的错误消息中
您需要修复代码以上传到正确的路径,或者您需要在测试目录中创建uploads目录
答案 1 :(得分:0)
请参阅操作系统的文档。 CentOS 6具有额外的安全配置,可能会阻止PHP访问tmp文件夹。
允许该文件夹访问Apache HTTPD(或将临时上载路径更改为允许Apache HTTPD通过SELinux配置访问的文件夹)。还要审核SELinux日志,找出确切阻止访问目录的设置。
E.g。如果您没有将PHP作为Apache模块运行,则可能需要允许其他进程(例如PHP(F)CGI二进制文件)受保护的文件系统资源。
答案 2 :(得分:0)
希望这能解决您的问题
首先检查文件夹是否存在,如果没有将其创建为下面的文件
if(!is_dir('uploads/Today')){
mkdir("uploads/Today", 0755);
}
答案 3 :(得分:0)
我知道这是一篇过时的文章,但是像许多人一样,人们对这个问题没有任何建议。但是,我想起了几年前我遇到的一个问题,结果最终也影响了这种情况。
问题是SELinux,您必须对其进行配置以允许读/写: Centos 7 / Apache / PHP - mkdir(): Permission denied
解决方案:
chcon -R -t httpd_sys_content_t / var / www /
chcon -R -t httpd_sys_content_rw_t / var / www / html /
如果其他所有方法都无法解决,请尝试此解决方案。
祝你好运!