3

実行しようとしているスクリプトから次の情報を取得しています。

Notice: fwrite() [function.fwrite]: send of 7 bytes failed with errno=1 Operation not permitted in /home/thrawn/public_html/sorcero.us/MinecraftQuery.class.php on line 165

しかし、phpinfo() を確認すると、allow_url_fopen がオンになっていて、Sockets Support が有効になっています。これを引き起こしている可能性のあるものを指摘するものは何も見つかりませんでした。

明確にするために、私はこのスクリプトを書きませんでした。PHP に関する私の知識は基本的なものにすぎませんが、phpinfo() は正しいことが許可されていると言っているので、これが機能することを十分に理解しています。問題のスクリプトはこちら: https://github.com/xPaw/PHP-Minecraft-Query/blob/master/MinecraftQuery.class.php

4

3 に答える 3

4

fwrite()に書き込ん$this->socketでいprivate function WriteData()ます。は行public function Connect()です

$this->Socket = @FSockOpen( 'udp://' . $Ip, (int)$Port, $ErrNo, $ErrStr, $Timeout );

これは、このファイルで$this->socketが書き込まれている唯一の行です。

また、マンページに警告メッセージがありますfsockopen()

リモート ホストに到達できない場合でも、UDP ソケットがエラーなしで開いているように見えることがあります。エラーは、ソケットとの間でデータを読み書きするときにのみ明らかになります。これは、UDP が「コネクションレス」プロトコルであるためです。つまり、オペレーティング システムは、実際にデータを送受信する必要があるまで、ソケットのリンクを確立しようとしません。

これはおそらくそうです。IP アドレスまたはポートに到達できなくても、ソケットは作成されます。これにより、データを書き込もうとするとエラー メッセージが表示されます。

したがって、これを解決するには、少なくとも次のことを行う必要があります。

  • IP アドレスとポートが正しいことを確認します。
  • サーバーが稼働中であることを確認します。
  • IP アドレスとポートが到達可能であること (ファイアウォールでブロックされていないこと) を確認してください。

正しい設定がどうあるべきかわかりません。ソフトウェアを外部サーバーにインストールした場合は、IP アドレスとポートの設定を確認できるように、ローカル コンピューターでも試してください。

于 2012-08-28T05:38:10.140 に答える
2

PHP 構成を確認しても問題が解決しない場合は、ファイアウォール ログを確認してください。

Ignacio Vazquez-Abrams が述べたように、これは OS エラーです。

私の場合、CSF は発信接続をブロックしていました。

于 2013-02-01T21:47:56.247 に答える
-3

許可エラーのようですが、

試す、

 chmod -R folder_to_be_file_written

次に、phpスクリプトを実行します

于 2012-08-28T06:53:51.493 に答える