ホームページ  >  記事  >  バックエンド開発  >  PHPのファイルパーミッション関数chmodの詳細解説

PHPのファイルパーミッション関数chmodの詳細解説

*文
*文オリジナル
2018-01-05 18:02:525874ブラウズ

chmod() 関数はファイルモードを変更します。 chmod — ファイル モードを変更します。成功した場合は TRUE を返し、それ以外の場合は FALSE を返します。

構文
chmod(file,mode) パラメータ 説明
file 必須。チェックするドキュメントを指定します。
モードはオプションです。新しい権限を指定します。
モードパラメータは 4 つの数字で構成されます:
最初の数字は常に 0 です
2 番目の数字は所有者の権限を指定します
2 番目の数字は所有者が属するユーザーグループの権限を指定します
4 番目の数字は他の全員を指定します 権限
可能な値 (複数の権限を設定する必要がある場合は、以下の数値を合計してください):
1 - 実行権限
2 - 書き込み権限
4 - 読み取り権限
簡単な例を見てみましょう

<?php 
chmod("/somedir/somefile", 755); // 十进制数,可能不对 
chmod("/somedir/somefile", "u+rwx,go+rx"); // 字符串,不对 
chmod("/somedir/somefile", 0755); // 八进制数,正确的 mode 值 
?>

再帰ファイル パターンの改善@ infosoft....、これは Linux ファイル システムのすべてのファイル タイプを処理できる少し短いものです。これにより、ファイルまたはディレクトリのパーミッションをバッチ変更できます

<?php 
function chmodr($path, $filemode) { 
if (!is_dir($path)) 
return chmod($path, $filemode); 
$dh = opendir($path); 
while (($file = readdir($dh)) !== false) { 
if($file != &#39;.&#39; && $file != &#39;..&#39;) { 
$fullpath = $path.&#39;/&#39;.$file; 
if(is_link($fullpath)) 
return FALSE; 
elseif(!is_dir($fullpath) && !chmod($fullpath, $filemode)) 
return FALSE; 
elseif(!chmodr($fullpath, $filemode)) 
return FALSE; 
} 
} 
closedir($dh); 
if(chmod($path, $filemode)) 
return TRUE; 
else 
return FALSE; 
} 
?>

ディレクトリが多すぎる場合は、

<?php 
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathname), RecursiveIteratorIterator::SELF_FIRST); 
foreach($iterator as $item) { 
chmod($item, $filemode); 
} 
?>

このコードを使用してディレクトリのパーミッションを変更できます
笑、chmod の単純な構文についてだけ説明しているわけではありません。複雑なchmodも行う 使用例
説明
bool chmod (string $filename, int $mode)
filenameで指定されたファイルのモードをmodeで指定されたモードに変更してみます。
モードは自動的に 8 進数値として扱われないこと、また文字列 (「g+w」など) にすることはできないことに注意してください。正しい動作を保証するには、モードの前に 0 を追加する必要があります。
モード パラメータには、所有者、所有者のグループ、全員のアクセス制限を順番に指定する 3 つの 8 進数が含まれます。各部分は、必要な権限を追加することで計算できます。数値 1 はファイルを実行可能にし、数値 2 はファイルを書き込み可能にし、数値 4 はファイルを読み取り可能にします。これらの数字を追加して、必要な権限を指定します。 UNIX システムでのファイル権限については、マニュアル「man 1 chmod」および「man 2 chmod」を参照してください。

<?php 
// Read and write for owner, nothing for everybody else 
chmod("/somedir/somefile", 0600); 
// Read and write for owner, read for everybody else 
chmod("/somedir/somefile", 0644); 
// Everything for owner, read and execute for others 
chmod("/somedir/somefile", 0755); 
// Everything for owner, read and execute for owner&#39;s group 
chmod("/somedir/somefile", 0750); 
?>

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。
注: 現在のユーザーとは、PHP を実行しているユーザーを指します。ほとんどの場合、通常のシェルまたは FTP ユーザーと同じではありません。ほとんどのシステムでは、ファイルのモードを変更できるのは、そのファイルを所有するユーザーだけです。
注: この機能はリモート ファイルでは使用できません。チェックされるファイルにはサーバーのファイル システム経由でアクセスする必要があります。
注: セーフ モードがオンになっている場合、PHP は操作されているファイルが実行されているスクリプトと同じ UID (所有者) を持つかどうかを確認します。 SUID、SGID、およびスティッキー ビットは変更できないことに注意してください。

以上がPHPのファイルパーミッション関数chmodの詳細解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。