問題
ログ書き込みメソッドでfile_put_contentsメソッドが使用されていますが、現在、ログを書き込むコールバックメソッドを実行すると、書き込み権限がない旨のメッセージが表示されます。ファイルとエラー メッセージ
file_put_contents: ストリームを開けませんでした: 許可が拒否されました(PHP ビデオ チュートリアル )
解決プロセス
#毎日生成されるため、定期的に実行されるスケジュールされたタスクがあるため、ログ フォルダーのアクセス許可を確認します。実行ユーザーは root なので、フォルダーを生成するユーザーとユーザー グループは両方とも root です。コールバックの実行ユーザーメソッドは www で、ログに書き込まれます メソッド
if(!is_dir($dir)){ mkdir($dir,0777,true); }
ディレクトリが存在しない場合は、ディレクトリを作成しますが、PHP の mkdir 関数でフォルダーを作成するときに 777 のアクセス許可を設定します。実際、作成されたファイルにはまだ755 権限。 Linux システムでは、ファイル/フォルダーの作成時にデフォルトのアクセス許可があります。このアクセス許可は、umask 設定の影響を受けます。/etc/bashrc 設定ファイルには、次の設定があります:
if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002else umask 022fi
Default umask Linuxシステムでは022です。弊社の777&で動作させると755になります。これが理由です。ここでの設定は、PHP の問題だけでなく、Linux システムのデフォルトの権限設定に直接影響します。したがって、これを直接変更して 022 を 000 に変更することはお勧めできません。
最終解決策
最初にディレクトリを作成し、次に chmod を使用して権限を 777
mkdir('test', 0777); chmod('test', 0777);
以上がPHP のファイル書き込み権限の失敗を解決する方法 file_put_contents: ストリームを開けませんでした: 権限が拒否されましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。