PHP mkdir() に書き込み権限がない問題を解決する方法

不言
リリース: 2023-04-01 06:00:02
オリジナル
3225 人が閲覧しました

この記事では主に、PHP mkdir() の書き込み権限がない問題の解決策、umask の詳細な説明、mkdir() 後の書き込み権限がない問題の解決方法を紹介します。必要な方は参考にしてください。

#mkdir を使用してフォルダーを作成する場合、この関数には 2 つのパラメーターがあることがわかります。2 番目のパラメーターは、新しく作成されたフォルダーのアクセス許可を指定します。

しかし、 mkdir('file address', 0777); を直接使用すると、新しいフォルダーのアクセス許可が 777 ではなく、通常は 022 であることがわかります。

mkdir がフォルダーのアクセス許可を設定するとき、オペレーティング システムに現在ログインしているユーザーの umask (ユーザーのデフォルトのアクセス許可属性) 値とビットごとの AND が実行され、その結果の値が最終的なアクセス許可の値になるためです。 。

umask とは何ですか?

作成したファイルのデフォルトのアクセス許可を取得するにはどうすればよいですか?このデフォルトの権限を変更するにはどうすればよいですか?

システムにログインしてファイルを作成すると、常にデフォルトの権限が与えられます。では、この権限はどこから来るのでしょうか?これが umask の機能です。

umask は、ユーザーが作成したファイルのデフォルトのアクセス許可を設定します。これは、chmod がファイルのアクセス許可コードを設定するのに対し、umask は「補完コード」を設定します。通常、umask 値は /etc/profile、$HOME/.bash_profile、または $HOME/.profile に設定されます。

umask 値を計算するにはどうすればよいですか?

umask コマンドを使用すると、ファイルの作成時にデフォルト モードを設定できます。umask 値には、各タイプのユーザー (ファイル所有者、同じグループ内のユーザー、その他のユーザー) に対応する番号があります。 。ファイルの場合、この数値の最大値は 6 です。システムでは、テキスト ファイルの作成時に実行権限を与えることはできません。作成後に chmod コマンドを使用して、この権限を増やす必要があります。ディレクトリでは実行権限を設定できるため、ディレクトリの場合、umask の最大数は 7 までです。

このコマンドの一般的な形式は umask nnn です。nnn は 000 ~ 777 です。

覚えておく必要があるのは、umask はアクセス許可から対応するビットを「取り除く」ということだけです。

例: umask 値が 022 の場合、デフォルトのディレクトリ権限は 755、デフォルトのファイル権限は 644 です。

つまり、ユーザー umask が 022 (通常、デフォルトはこれです) の場合、000 010 010 は mkdir で指定された 777 に等しい、つまり 111 111 111 となります。「AND」の後に、実際のアクセス許可が取得されます。は:022。

新しいフォルダーのアクセス許可を最大化したい場合、それを達成する 2 つの方法があります: (もちろん、現在のユーザーが最高のアクセス許可を付与できるという条件の下で)

1ユーザー umask を変更する、php umask 関数が提供されています:

$oldumask=umask(0); 
mkdir('test',0777); 
umask($oldumask);
ログイン後にコピー

この方法は、スクリプトの開始ファイルに umask 値を指定し、mkdir を直接使用してアクセス許可を制御するように見えます。注意する必要があるのは、マルチスレッドサーバーで umask を使用すると、複数のスレッドが umask を共有するため、混乱が生じる可能性があることです。

2. chmod 関数を使用します。これも最も一般的に使用される方法です。

mkdir('文件地址', 0777); 
chmod('文件地址', 0777);
ログイン後にコピー

最後に、アクセス許可の値は 8 進数で表すのが最適であることに注意してください。 「0」を指定し、引用符は付けないでください。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

「サポートされている暗号化ツールが Laravel 5.1 に見つかりません」エラーの解決方法

#致命的エラーの解決方法PHP での session_start () の間違い

以上がPHP mkdir() に書き込み権限がない問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート