9

我正在使用这个基本脚本:

$folderPath = "../path/to/$folder/";
mkdir("$folderPath");

我创建了这个目录,然后将照片上传到它。我已经这样做了 4-5 个月了,当我尝试通过网络浏览器查看文件夹的内容时,突然开始出现“禁止”错误

正在创建相同的目录,照片仍在上传没有问题,但我无法访问照片

我尝试重写脚本并使用 chmod 更改权限,但我一点运气都没有

所有较旧的文件夹都是使用以下命令创建的:-w- rwx rx rx

我无法重新创建这个

我尝试在脚本中添加 chmod 行:

$folderPath = "../sales/inventory/$folder/";
mkdir("$folderPath");
chmod("$folderPath", 0755);

但我无法重新创建相同的权限,我试图了解 chmod 的工作原理,但我不知道如何让这个非常基本的功能再次正常工作

4

4 回答 4

12

尝试寻找一个 HTAccess 文件,其中将提到“Options -Indexes”选项,因为这主要用于在 Web 浏览器中不显示文件夹的内容。需要通过以下方式搜索文件:-

  • 在文件夹“ root_folder/sales/inventory/$folder/”中,其中“ $folder”与您的代码中提到的一样。
  • 如果找不到,请在文件夹“root_folder/sales/inventory/”中尝试。
  • 如果未找到,请在文件夹“root_folder/sales/”中尝试。
  • 如果未找到,请在文件夹“root_folder/”中尝试。

当您在 HTAccess 文件中获得“Options -Indexes”的代码时,您可以从那里删除/注释该行代码,或者您也可以在您所需的“ $folder”文件夹中编写另一个 HTAccess 文件,代码将在其中“期权索引”。

同样在PHP页面中,逻辑必须是这样的:-

<?php
$folderPath = "../sales/inventory/$folder/";
mkdir("$folderPath");
chmod("$folderPath", 0755);

// Use of "copy()" / "move_uploaded_file()" function here, using some "$targetFile" variable.
chmod($targetFile, 0755);
?>

这将在您从“$folder”文件夹中取消链接/删除上传的文件时为您提供帮助。

希望能帮助到你。

于 2010-09-22T12:07:50.830 回答
8

如果您的 $folder 变量包含一些子目录,则您的父目录可能没有被更改为正确的权限。这是我在租用的 OVH Gentoo 服务器上遇到的问题。

想象一下,$folder = '/store1/ally23/shelf42';您的最终目录结构是 ../sales/inventory/store1/ally23/shelf42,并且您需要0777权限。你做:

mkdir($folderPath, 0777, true) || chmod($folderPath, 0777);

只有最终目录shelf42被 chmod 为0777. 中间目录是使用默认权限创建的(在我的例子中0744)。

PHP 的 chmod 命令中没有递归选项,因此您必须遍历中间目录并单独对它们进行 chmod。

于 2013-06-13T10:18:57.567 回答
2

如果您在共享环境中,您可能还希望在上传后chown,以确保安全。特别是如果您在虚拟主机以外的用户下运行您的 Web 服务器,该用户有权访问(例如:“nobody”与“mysite”。)这在 cPanel 服务器 FWIW 中很常见。

于 2012-09-18T00:57:43.907 回答
0

简单地说 umask 表示新文件/目录的默认权限:

<?php
 umask(022);
?>

这将分别设置用户、组和其他人的默认权限:

  • 0 - 读、写和执行
  • 1 - 读写
  • 2 - 读取并执行
  • 3 - 只读
  • 4 - 编写和执行
  • 5 - 只写
  • 6 - 只执行
  • 7 - 没有权限
于 2020-12-18T23:24:06.217 回答