[英]php mkdir() chmod and permissions
我正在使用这个基本脚本:
$folderPath = "../path/to/$folder/";
mkdir("$folderPath");
我创建这个目录,然后上传照片到它。 我已经这样做了 4-5 个月了,当我尝试通过网络浏览器查看文件夹的内容时,突然间我开始收到“禁止”错误
目录创建相同,照片仍在上传没有问题,但我无法访问照片
我尝试重写脚本并使用 chmod 来更改权限,但我一点运气都没有
使用以下命令创建所有较旧的文件夹:-w- rwx rx rx
我无法重新创建它
我试过在我的脚本中添加一个 chmod 行:
$folderPath = "../sales/inventory/$folder/";
mkdir("$folderPath");
chmod("$folderPath", 0755);
但我无法重新创建相同的权限,我试图了解 chmod 的工作原理,但我无法弄清楚如何让这个非常基本的功能再次正常工作
尝试查找 HTAccess 文件,其中将提到“Options -Indexes”选项,因为这主要用于不在 Web 浏览器中显示文件夹的内容。 该文件需要按以下方式搜索:-
root_folder/sales/inventory/$folder/
”中,其中“ $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”文件夹中取消链接/删除上传的文件时,这将对您有所帮助。
希望它有帮助。
如果您的 $folder 变量包含一些子目录,您的父目录可能没有被修改为正确的权限。 这是我在租用的 OVH Gentoo 服务器上遇到的问题。
想象一下$folder = '/store1/ally23/shelf42';
所以你的最终目录结构是../sales/inventory/store1/ally23/shelf42
,你需要0777
../sales/inventory/store1/ally23/shelf42
。 你这样做:
mkdir($folderPath, 0777, true) || chmod($folderPath, 0777);
只有最终目录shelf42
被修改为0777
。 中间目录是使用默认权限创建的(在我的例子中是0744
)。
PHP 的 chmod 命令中没有递归选项,因此您必须遍历中间目录并单独对它们进行 chmod。
如果您在共享环境中,为了安全起见,您可能还想在上传后chown 。 特别是如果您在虚拟主机以外的用户下运行您的 Web 服务器有权访问(例如:“nobody”与“mysite”。)这在 cPanel 服务器中很常见,FWIW。
简单的 umask 意味着新文件/目录的默认权限:
<?php
umask(022);
?>
这分别为用户、组和其他人设置了默认权限:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.