gpt4 book ai didi

PHP 创建的文件 | SSH 无法删除(权限被拒绝)

转载 作者:IT王子 更新时间:2023-10-29 00:39:25 24 4
gpt4 key购买 nike

Linux 连接

我使用 php 创建一个文件

if (!is_dir(DIR_FILE))
mkdir(DIR_FILE, 0777);

$filename = DIR_FILE . $id . '.txt';

$handle_cf = fopen($filename, 'a');
fwrite($handle_cf, $data . "\n");
fclose($handle_cf);

chmod($filename, 0777);

chown($filename, "usr111"); // usr111 = username
chgrp($filename, "usr111"); // usr111 = group that is also attached to apache

文件获得以下权限。

-rwxrwxrwx 1 apache       apache       1447 Apr  4 12:48 D.txt
-rwxrwxrwx 1 apache apache 1447 Apr 4 12:48 E.txt

然而,当我尝试删除文件时,在普通用户帐户 (usr111) 下。我收到以下错误

[usr111@host session]$ rm D.txt 
rm: cannot remove `D.txt': Permission denied

注意:我可以删除根目录下的文件。

已找到修复!即使我在 php 的 mkdir 上使用模式设置。由于某种原因,这不起作用。我添加了以下内容。

    if (!is_dir($dir)) {
mkdir($dir, 0777);

chmod($dir, 0777);
}

最佳答案

mkdir运行良好,但第二个参数不是权限,它是系统将与您当前的 umask 一起使用的模式。计算要设置的权限。来自手册:

The mode is also modified by the current umask, which you can change using umask().

您需要更改脚本来设置权限,而无需调用文件系统两次:

$oldUmask = umask(0); // disable umask
mkdir($path, 0777);
umask($oldUmask); // reset the umask

关于PHP 创建的文件 | SSH 无法删除(权限被拒绝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10016699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com