From 16389583321f1921a9ab7d01c9df8e77cade3b98 Mon Sep 17 00:00:00 2001 From: Guilherme Nascimento Date: Tue, 8 Sep 2026 09:23:27 -0300 Subject: [PATCH 1/2] Fixes Example #2 using fileperms Same as: https://github.com/php/doc-en/pull/5842 Incorrect: ```php case 0x8000: // regular $info = 'r'; ``` --- reference/filesystem/functions/fileperms.xml | 48 +++++++------------- 1 file changed, 16 insertions(+), 32 deletions(-) diff --git a/reference/filesystem/functions/fileperms.xml b/reference/filesystem/functions/fileperms.xml index de6b549d03..9dfcba059e 100644 --- a/reference/filesystem/functions/fileperms.xml +++ b/reference/filesystem/functions/fileperms.xml @@ -90,51 +90,35 @@ echo substr(sprintf('%o', fileperms('/etc/passwd')), -4); $perms = fileperms('/etc/passwd'); switch ($perms & 0xF000) { - case 0xC000: // ソケット - $info = 's'; - break; - case 0xA000: // シンボリックリンク - $info = 'l'; - break; - case 0x8000: // 通常のファイル - $info = 'r'; - break; - case 0x6000: // ブロックスペシャルファイル - $info = 'b'; - break; - case 0x4000: // ディレクトリ - $info = 'd'; - break; - case 0x2000: // キャラクタスペシャルファイル - $info = 'c'; - break; - case 0x1000: // FIFO パイプ - $info = 'p'; - break; - default: // 不明 - $info = 'u'; + case 0x1000: $info = 'p'; break; // FIFO パイプ + case 0x2000: $info = 'c'; break; // キャラクタスペシャルファイル + case 0x4000: $info = 'd'; break; // ディレクトリ + case 0x6000: $info = 'b'; break; // ブロックスペシャルファイル + case 0x8000: $info = 'r'; break; // 通常のファイル + case 0xA000: $info = 'l'; break; // シンボリックリンク + case 0xC000: $info = 's'; break; // ソケット + + // 不明 + default: $info = 'u'; } // 所有者 +$setuid = $perms & 0x0800; $info .= (($perms & 0x0100) ? 'r' : '-'); $info .= (($perms & 0x0080) ? 'w' : '-'); -$info .= (($perms & 0x0040) ? - (($perms & 0x0800) ? 's' : 'x' ) : - (($perms & 0x0800) ? 'S' : '-')); +$info .= (($perms & 0x0040) ? ($setuid ? 's' : 'x') : ($setuid ? 'S' : '-')); // グループ +$setgid = $perms & 0x0400; $info .= (($perms & 0x0020) ? 'r' : '-'); $info .= (($perms & 0x0010) ? 'w' : '-'); -$info .= (($perms & 0x0008) ? - (($perms & 0x0400) ? 's' : 'x' ) : - (($perms & 0x0400) ? 'S' : '-')); +$info .= (($perms & 0x0008) ? ($setgid ? 's' : 'x') : ($setgid ? 'S' : '-')); // 全体 +$sticky = $perms & 0x0200; $info .= (($perms & 0x0004) ? 'r' : '-'); $info .= (($perms & 0x0002) ? 'w' : '-'); -$info .= (($perms & 0x0001) ? - (($perms & 0x0200) ? 't' : 'x' ) : - (($perms & 0x0200) ? 'T' : '-')); +$info .= (($perms & 0x0001) ? ($sticky ? 't' : 'x') : ($sticky ? 'T' : '-')); echo $info; ?> From 82128874b60ee623f3d951ea89338c29e95afb6a Mon Sep 17 00:00:00 2001 From: Guilherme Nascimento Date: Tue, 8 Sep 2026 10:44:16 -0300 Subject: [PATCH 2/2] EN-Revision --- reference/filesystem/functions/fileperms.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reference/filesystem/functions/fileperms.xml b/reference/filesystem/functions/fileperms.xml index 9dfcba059e..000f6fb824 100644 --- a/reference/filesystem/functions/fileperms.xml +++ b/reference/filesystem/functions/fileperms.xml @@ -1,6 +1,6 @@ - +