ホームページ  >  記事  >  バックエンド開発  >  PHP のファイル書き込み権限の失敗を解決する方法 file_put_contents: ストリームを開けませんでした: 権限が拒否されました

PHP のファイル書き込み権限の失敗を解決する方法 file_put_contents: ストリームを開けませんでした: 権限が拒否されました

步履不停
步履不停オリジナル
2019-06-06 14:13:2310861ブラウズ

PHP のファイル書き込み権限の失敗を解決する方法 file_put_contents: ストリームを開けませんでした: 権限が拒否されました

問題

ログ書き込みメソッドで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 サイトの他の関連記事を参照してください。

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