当前位置: 首页 > 面试题库 >

move_uploaded_file给出“无法打开流:权限被拒绝”错误

史钊
2023-03-14
问题内容

当尝试在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():在第78行的/var/www/html/mysite/process.php中无法将“ / tmp /
phpsKD2Qm”移动到“ images / robot.jpg”

如您所见,它从未从php.ini文件中获取关于上传文件的配置。

我在这里做错了什么?


问题答案:

这是因为imagestmp_file_upload只能由root用户写入。为了使上传正常工作,我们需要使这些文件夹的所有者与httpd进程所有者相同,或者使它们在全局范围内可写(不好的做法)。

  1. 检查apache进程所有者:$ps aux | grep httpd。第一列将是所有者,通常是nobody
  2. 更改您的所有者imagestmp_file_upload要成为的所有者,nobody或更改您在步骤1中找到的所有者。

    $sudo chown nobody /var/www/html/mysite/images/
    

    $sudo chown nobody /var/www/html/mysite/tmp_file_upload/

  3. Chmod imagestmp_file_upload现在可以由所有者写(如果需要的话)[似乎您已经准备好了。在@Dmitry Teplyakov答案中提及。

    $ sudo chmod -R 0755 /var/www/html/mysite/images/
    

    $ sudo chmod -R 0755 /var/www/html/mysite/tmp_file_upload/

  4. 有关为什么会发生此行为的更多详细信息,请查看手册[http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir,请注意,它也涉及open_basedir指令



 类似资料:
  • 我想上传一张图片。每次我试图上传图片时,我都会收到下面的错误信息。 我已经设置了读取权限 警告:move_uploaded_file(上载/1000020170620022532img3.png):无法打开流: /Applications/XAMPP/xamppfiles/htdocs/social-network-master/profile.php第41行的权限被拒绝 警告:move_uplo

  • 嘿,我总是出错 警告:move_uploaded_file(路径):无法打开流:/Users/Shared/xampp htdocs/php reports/upload中的权限被拒绝。php第27行 我的index.php密码是 我的php代码是 我还将目录设置为 chmod 777

  • 我是PHP新手。我计划根据用户输入创建文件夹、子文件夹。 文件夹和子文件夹已成功创建。 最后我尝试创建一个文件,它显示以下错误。 fopen(upload/llocalhost/hrms):无法打开流:在C:\xamp\htdocs\ssspider\index中的权限被拒绝。php第205行 我的代码是: 请帮我找出我的问题? 编辑:谢谢。我出错了。以前我没有提到文件名。现在工作正常。谢谢

  • 我正在为我的站点创建一个配置文件图片上载功能,但由于某种原因,不想运行。 我尝试了多个论坛,测试了所有可能的不同方法,但没有运气。 因此,首先,我检查所选文件是否有有效的扩展名,如果有,它将用microtime散列文件临时名(出于安全考虑)。然后,我将扩展连接到结尾,中间有一个句号,即输出将是。 然后通过将文件变量连接到目录的末尾来创建一个文件路径变量。 然后,通过传递和变量(就像您应该做的那样)

  • 我正在玩一个工作Laravel 4安装和移动一切到一个子文件夹。然后我决定不这样做,我把它全部移回来(全部通过命令行): 然后呢 现在,该网站抛出以下错误: 以下是完整错误的截图: http://i.imgur.com/8deGG97.png 我已经尝试将/storage文件夹的权限设置为777,但没有成功。

  • 我在Macbook pro osx 10.9 Firefox浏览器上使用XAMP 1.7.3 基本上,我正在尝试编写一个代码,要求用户输入一些信息,然后使用以下方法将信息存储在.txt文件中: 但是我一直收到这个错误消息: 警告:fopen(registration.txt) [function.fopen]:无法打开流:第 30 行的 /Applications/XAMPP/xamppfiles