Linux SSH
を使用して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
注: root の下にあるファイルを削除できます。
修正が見つかりました! PHPのmkdirでモード設定を使用していたにもかかわらず。何らかの理由で、これは機能しませんでした。以下を追加しました。
if (!is_dir($dir)) {
mkdir($dir, 0777);
chmod($dir, 0777);
}