CHMOD関数の基本的な構文は次のとおりです。
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$mode</span></span><span>);
</span></span>
$ filename :変更する必要があるファイルまたはディレクトリへのパス。
$モード:ターゲット許可の数値(オクタル形式である場合があります)、またはRWXのようなシンボリック表記を使用できます。
例:
<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__">chmod</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-number">0644</span></span><span>); </span><span><span class="hljs-comment">// 設定example.txtファイルの権限は次のとおりです644</span></span><span>
</span></span>
この例では、 0644はファイル権限の数値表現であり、ファイルの所有者がファイルを読み書きできることを示し、他のユーザーは許可のみを読み取っています。
LinuxおよびUNIXシステムでは、各ファイルまたはディレクトリの権限は、ファイル所有者(所有者)、ユーザーグループ(グループ)、およびその他のユーザー(その他)の3つの部分で構成されています。各部分の権限は、次のように個別に設定できます。
R(読み取り) :ユーザーがファイルコンテンツを表示できることを示し、許可を読み取ります。
W(書き込み) :ユーザーがファイルコンテンツを変更できることを示す許可を書き込みます。
x(実行) :実行許可、ユーザーがファイルを実行できることを示します(スクリプトまたはプログラムの場合)。
許可値は、ファイル所有者、ユーザーグループ、およびその他のユーザーの許可を示す3桁のオクタル番号です。たとえば、 0644は次のことを意味します。
6(RW-) :ファイルの所有者は、読み取りおよび書き込み許可を持っていますが、実行権限はありません。
4(r-) :ユーザーグループは許可を読み取っています。
4(r-) :他のユーザーが許可を読んでいます。
数値モードでは、ファイル許可は3つのオクタル数で指定されます。各番号は、ファイル所有者、ユーザーグループ、およびその他のユーザーの権限を表します。例えば:
777 :すべてのユーザーは、権限を読み、書き込み、実行しています(非常に高い許可)。
755 :ファイル所有者にはすべてのアクセス許可があり、他のユーザーは読み取りと実行のみを実行できます(一般的に実行可能ファイルまたはディレクトリで使用されます)。
644 :ファイルの所有者は読み書きができますが、他のユーザーは読み取ることができます(通常のファイルで使用されることがよくあります)。
象徴的な方法は、文字と記号を使用して、読み取り権限を表すRなど、権限を表すこと、 Wは書き込み許可を表し、 xは実行権限を表します。許可を設定するとき、次のシンボルを使用できます。
+ :許可を増やします。
- :許可を削除します。
= :許可を設定します。
例:
<span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>, </span><span><span class="hljs-number">0755</span></span><span>); </span><span><span class="hljs-comment">// のためにexample.txt文件設定権限のために755</span></span><span>
</span></span>
また、シンボリック方法を使用して許可操作を実行することもできます。
<span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>, </span><span><span class="hljs-string">'u+x'</span></span><span>); </span><span><span class="hljs-comment">// のために文件拥有者增加执行権限</span></span><span>
</span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>, </span><span><span class="hljs-string">'o-w'</span></span><span>); </span><span><span class="hljs-comment">// 他のユーザーから書き込み許可を削除します</span></span><span>
</span></span>
ディレクトリの場合、許可は通常、実行権限( x )を含める必要があります。実行許可がない場合、ユーザーは許可を読んでいても、ディレクトリを入力できません。
<span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'example_directory'</span></span><span>, </span><span><span class="hljs-number">0755</span></span><span>); </span><span><span class="hljs-comment">// のために目录設定755権限</span></span><span>
</span></span>
CHMOD関数は、異なるオペレーティングシステムで異なる機能を遂行します。 LinuxおよびUNIXシステムでは、ファイル許可制御は非常に厳格であり、PHPスクリプトにはファイルアクセス許可を正常に変更するのに十分な権限が必要です。 PHPスクリプトがWebサーバーで実行されている場合、サーバーユーザー(www-dataなど)はターゲットファイルで操作する許可を持たなければなりません。 PHPプロセスのユーザーが十分な権限を持っていることを確認してください。そうしないと、 CHMODが失敗します。
CHMODに渡されたファイルパスが正しいことを確認してください。パスが間違っている場合、PHPはファイルやディレクトリを見つけることができず、したがってアクセス許可を変更できません。
<span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-string">'/path/to/your/file.txt'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-number">0755</span></span><span>);
</span></span>
ファイル許可を変更するときは注意してください。また、あまりにも高い権限をさりげなく与えないようにします(777など)。この許可は、すべてのユーザーがファイルを変更、読み取り、または実行できることを意味します。これにより、セキュリティの脆弱性を引き起こす可能性があります。通常、ファイル許可は最小許可の原則に設定する必要があり、必要なユーザーとプログラムのみがファイルまたはディレクトリにアクセスできます。
CHMOD関数が正常に実行される場合はtrueを返し、エラーがある場合はfalseを返します。実際のアプリケーションでは、エラー処理を組み合わせて、操作の成功を確実にすることができます。
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>, </span><span><span class="hljs-number">0644</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-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>