ファイルのパーミッションにPHPの書き込みが失敗しますfile_put_contentsを:ストリームをオープンに失敗しました:アクセスが拒否されました

問題

書き込みログで使用されるメソッドをますfile_put_contents、そして今日のログファイルを書き込むための何のプロンプト書面による許可がない場合のコールバックメソッド、エラープロンプト

file_put_contents: failed to open stream: Permission denied

解決プロセス

ログフォルダのアクセス権を確認し、それは日によって生成されるため、実行時間指定定期タスクがあり、実行ユーザがルートであるため、コールバックメソッドは、ユーザーがログ方式に書き込まれ、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 002
else
        umask 022
fi

777と&私たちの事業の背後にある022へのLinuxシステムのデフォルトのumaskは、それが755になり、それが理由です。ここで設定した直接のLinuxシステムのデフォルトのアクセス許可の設定だけでなく、PHPの問題に影響を与えます。直接022が000に変更され、変更することは推奨されません。

最後ソリューション

まず、ディレクトリを作成し、その後chmodのパーミッションを777に変更使用

mkdir('test', 0777);
chmod('test', 0777);

ます。https://my.oschina.net/xushuhui/blog/3058367で再現

おすすめ

転載: blog.csdn.net/weixin_34038652/article/details/92031929