1. ホーム
  2. php

php はストリームを開くのに失敗しました。パーミッションが拒否されました

2022-02-22 20:03:11

Uncaught exception 'thinkexception' with message 'error_log(/www/api/public/... /runtime/log/201611/29.log): failed to open stream: パーミッションが拒否されました' in /www/api/thinkphp/library/think/log/driver/File.php







この問題は、許可された後、明日新しいログが生成されるときに再び発生します。(Linux環境)

解決策:selinuxをオフにする 1 恒久的な方法 - サーバーの再起動が必要です。

etc/selinux/config ファイルを修正して SELINUX=disabled に設定し、サーバーを再起動します。

2 一時的な方法 - システムパラメータの設定

コマンドを使用する

setenforce 0

アタッチメントです。

setenforce 1 SELinux を強制モードに設定します。

setenforce 0 は SELinux をパーミッシブモードに設定します。

phpのallow_url_fopenオプションがオフになっています。

その理由は、php.iniでallow_url_fopenオプションをオフにしているため、それをオンにするだけです。

allow_url_fopenをオンにする権限がない場合は、curl関数を使って置き換えることができ、これも非常に簡単です。

etc/selinux/config ファイルを修正して SELINUX=disabled にする、私はこの方法で解決しました。

フォルダのパーミッションがおかしいという意見が多かったので、 "chmod -R 777 /your folder" でフォルダのパーミッションを変更しましたが、うまくいかず、まだエラーが報告される状態です。

トラブルシューティングのために何度か苦心した結果、file_get_contentsのurl: "http://x.x.x.x:9898/aa/bb/cc.php"を置き換えると、ポートなしのfile_get_contentsは正常なので、フォルダのパーミッション問題ではないのは間違いないことがわかりました。

そして、Webmasterが書いた "file_get_contents can't get url with port" (http://www.111cn.net/phper/31/48374.htm) は、ようやく無事解決しました。

解決方法は以下の通りです。出力例。これは、テストテキストを含むテストファイルです。同じ関数で、リモートサーバーからコンテンツを取得することもできます file_get_contents('http://www.111cn.net'); これも問題ありませんが、ポートがある場合は問題が発生します

例: file_get_contents('http://localhost:12345'); --------------------- この記事は qhgseeg の CSDN ブログから引用しています。記事の全文はこちらでご覧いただけます: https://blog.csdn.net/qhgseeg/ article/details/70785654?utm_source=copy

http://www.thinkphp.cn/topic/44110.html