【问题标题】:move_uploaded_file gives “failed to open stream: Permission denied in /var/www/html”move_uploaded_file 给出“无法打开流:/var/www/html 中的权限被拒绝”
【发布时间】:2023-04-02 07:18:02
【问题描述】:

我正在尝试将文件上传到 Redhat 服务器,但出现此错误:

无法打开流:/var/www/html 中的权限被拒绝

我修改了所有文件夹中的许可证,但它仍然不起作用。谁能指导我?

如果我在 localhost 中运行我的应用程序,它可以工作,但在服务器中它就无法工作。

我正在使用:Redhat v7,PHP 版本 5.4.16,wamp 版本 2.2

我已经修改了 php.ini 和 httpd.conf,就像我阅读的另一个答案一样,但没有结果。

【问题讨论】:

  • 你是否在文件夹上设置了 777 进行测试(我知道设置 777 不好,但我只是在问)我在 Ubuntu Server 上遇到了同样的问题,我唯一的解决方案是移动/etc/上的文件
  • 您需要始终提供绝对路径而不是相对路径。所以请确保它看起来像 move_uploaded_file(__DIR__ . '/path') 而不是 move_uploaded_file('/path')
  • 为清晰起见重新措辞。
  • 发生错误是因为它无法读取上传的文件还是因为它无法写入目标?此问题是否仅在 move_uploaded_file() 中出现,还是在其他操作中出现(touch()file_get_contents())?是否设置了 open_basedirsafe_mode? php/apache 用户(和组)是否与文件/目录所有者相同? suEXEC/suPHP 是否会影响它(对他们不是很熟悉,所以我不知道他们是否可以)?

标签: php apache redhat permission-denied


【解决方案1】:

O_o wowow 安静点,不 777 !!!别人不写!! 首先通过拒绝所有人保护您的文件夹,需要有效的用户...

或者如果您的文件夹是公开的,请了解如何在没有 777 权限的情况下进行操作:

  • 显示哪个用户或组使用 apache 来运行自己,在 apache配置文件的环境变量。

  • 更改您要上传的文件夹的所有者或组 文件,并为组或用户设置写权限。

您有多种选择,例如: chown myftpuser.www-数据上传/ chmod g+w 上传/ 当您上传文件时,apache 会在 www-data 组上运行,并且它有权在文件夹内写入

【讨论】:

    【解决方案2】:

    在致电move_uploaded_file之前试试这个

    chmod($path_to_file, 777);
    

    【讨论】:

      猜你喜欢
      • 2013-06-19
      • 2011-12-27
      • 2015-11-02
      • 2023-03-18
      • 1970-01-01
      相关资源
      最近更新 更多