umask()関数は、現在のプロセス(umask)のファイルモード作成マスクを設定または取得するために使用されます。ファイルモードマスクは、新しく作成されたファイルのデフォルトアクセス許可を決定します。適切なマスクを設定することにより、PHPプログラムは、新しいファイルを作成するときにアクセス許可が自動的に制限されることを確認できます。
<span><span><span class="hljs-comment">// 現在のプロセスのファイル作成マスクを取得します</span></span><span>
</span><span><span class="hljs-variable">$current_umask</span></span><span> = </span><span><span class="hljs-title function_ invoke__">umask</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"現在umask値はです: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$current_umask</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-comment">// 新しいものをセットアップしますumask</span></span><span>
</span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0022</span></span><span>); </span><span><span class="hljs-comment">// マスク値はです0022,新しいファイルの権限があることを示します755</span></span><span>
</span></span>
上記の例では、最初に現在のUMASK値を取得し、 UMASK()関数を使用して新しいマスク値を設定します。 0022の意味は次のとおりです。新しく作成されたファイルは自動的に755のアクセス許可に設定されます(つまり、ユーザーは実行許可を読み取りおよび書き込み、他のユーザーのみを読み取りおよび実行することしかありません)。
STAT()関数は、ファイルサイズ、最後の変更時間、ファイル許可など、指定されたファイルのステータス情報を取得するために使用されます。モードフィールドがファイルの許可モードを表す詳細を含む配列を返します。
<span><span><span class="hljs-variable">$file_stat</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stat</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>);
</span><span><span class="hljs-comment">// ファイル許可モードを表示します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ファイルの許可モードはです: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$file_stat</span></span><span>[</span><span><span class="hljs-string">'mode'</span></span><span>]) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span></span>
STAT()によって返されるモードは整数値であり、少しマスクで解析する必要があります。ビット操作により、ファイルの詳細な許可情報を取得できます。
ファイル許可をより適切に管理するために、ファイルアクセス許可の変更を追跡するために、 umask()とstat()を組み合わせて使用できます。たとえば、ファイルが作成された後に実際のアクセス許可を確認し、予想どおりであることを確認するファイルがあるとします。
新しいファイルの許可が要件を満たしていることを確認するために、適切なUMASKを設定します。
stat()関数を使用して、ファイルにアクセス許可を取得します。
STAT()によって返された許可値を期待値と比較して、ファイル許可が変更されたかどうかを判断します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ファイル許可マスクを設定します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0022</span></span><span>);
</span><span><span class="hljs-comment">// 新しいファイルを作成します</span></span><span>
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-string">'example.txt'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-string">"This is a test file."</span></span><span>);
</span><span><span class="hljs-comment">// ファイルステータスを取得します</span></span><span>
</span><span><span class="hljs-variable">$file_stat</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stat</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span><span><span class="hljs-comment">// ファイル許可モードを取得します</span></span><span>
</span><span><span class="hljs-variable">$file_permissions</span></span><span> = </span><span><span class="hljs-variable">$file_stat</span></span><span>[</span><span><span class="hljs-string">'mode'</span></span><span>] & </span><span><span class="hljs-number">0777</span></span><span>; </span><span><span class="hljs-comment">// ビットワイズと操作,ファイルの許可値を取得します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ファイルの実際の権限は次のとおりです: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$file_permissions</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-comment">// ファイル許可が期待を満たしているかどうかを判断します</span></span><span>
</span><span><span class="hljs-variable">$expected_permissions</span></span><span> = </span><span><span class="hljs-number">0755</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file_permissions</span></span><span> === </span><span><span class="hljs-variable">$expected_permissions</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ファイルの許可は、期待に沿っています!\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ファイル許可は期待を満たしていません,実際の許可はです: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$file_permissions</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
最初に、新しいファイルの許可が0755であることを確認するために、Umask(0022)を介してファイル許可マスクを設定します。
file_put_contents()関数を使用して、新しいファイルExample.txtを作成します。
次に、 stat()関数、特にファイル(モード)の許可モードを介してファイルのステータス情報を取得します。
最後に、ファイルの許可部分はビットワイズ操作( &0777 )によって抽出され、予想許可( 0755 )と比較されます。
<span><span><span class="hljs-section">ファイルの実際の権限は次のとおりです: 755</span></span><span>
ファイルの許可は、期待に沿っています!
</span></span>
このようにして、ファイル許可が要件に従って設定されているかどうかを効果的に確認し、ファイル操作のセキュリティを確保することができます。