PHP: Windows で 777 ファイルを chmod すると、33060 に変換されます。33060 を 777 に変換する関数を作成したいです。このように
function convertperm($num) {
//do something
}
そして使用:
echo convertperm(33060); //return 777
手伝って頂けますか。ありがとうございました!
この関数は入力から許可ビットを 8 進数で返すので、Windows のファイル許可が Unix と同じように機能する場合、次のように機能します。
function convertperm($num) {
return 0777 & decoct($num);
}
ただし、Windows は Unix ではありません。取得する実行権限はstat
、ファイル名の拡張子によって異なります。の Windows バージョンはchmod
、ファイルを読み取り/書き込みまたは読み取り専用にするためにのみ使用できます。「読み取り」権限を削除することはできません。また、Windows には Unix のユーザー グループの概念が存在しないため、「所有者」、「グループ」、または「その他」に対する個別の権限はありません。
たとえば33060
、上記の関数 return の444
場合、読み取り専用権限を示します。理論上パーミッションを 777 に設定していた場合、666 に戻るはずです (Windows の chmod は実行ビットを無視します)。そのため、おそらくバグが原因です。を呼び出すときは、chmod
必ず 8 進定数を使用してください。
chmod($filename, 0777);