1

我是 PHP n00b,但按照这个优秀的 tut 的说明进行操作:

PHP Tizag 文件上传教程

然而,虽然这在我运行默认内置 Apache 的 Mac (OSX 10.8) 上运行良好,但它失败了,并且不能在 CentOS 6 机器上运行。查看 Apache 日志我得到了这个:

failed to open stream: No such file or directory

在/var/www/html的根目录中的“上传”文件夹上的权限已设置为777 (在 Mac 上是 /Library/Webserver/Documents)

[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 中的某些设置以使其正常工作?

提前谢谢了。

4

4 回答 4

1

根据您的问题,该uploads文件夹位于/var/www/html,但是通过错误消息尝试上传到/var/www/html/test/uploads其中不存在

要么您需要修复代码以上传到正确的路径,要么您需要在测试目录中创建一个上传目录

于 2013-04-30T12:30:37.807 回答
0

请查阅您的操作系统的文档。CentOS 6 有额外的安全配置,可能会阻止 PHP 访问 tmp 文件夹。

允许 Apache HTTPD 访问该文件夹(或将临时上传路径更改为 SELinux 配置允许 Apache HTTPD 访问的文件夹)。还要审核 SELinux 日志以找出究竟是什么设置阻止了对目录的访问。

例如,如果您没有将 PHP 作为 Apache 模块运行,您可能需要允许其他进程(例如 PHP (F)CGI 二进制文件)受保护的文件系统资源。

于 2013-04-30T12:36:25.777 回答
0

希望这能解决您的问题

首先检查文件夹是否存在,如果不存在,请按以下方式创建它

if(!is_dir('uploads/Today')){
   mkdir("uploads/Today", 0755);
}
于 2013-04-30T13:00:25.383 回答
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/

如果所有其他方法都失败了,请尝试此解决方案。

祝你好运!

于 2019-03-14T16:39:59.170 回答