我从我试图运行的脚本中获取以下内容:
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已打开且套接字支持已启用。我一直无法找到任何可能导致这种情况的原因。
为了澄清,我没有写这个脚本。我对PHP的了解大部分只是基础知识,但我知道足以说明这应该有效,因为phpinfo()说正确的事情是允许的。有问题的脚本在这里:https://github.com/xPaw/PHP-Minecraft-Query/blob/master/MinecraftQuery.class.php
答案 0 :(得分:4)
fwrite()
写入$this->socket
并在private function WriteData()
。 public function Connect()
中有一行
$this->Socket = @FSockOpen( 'udp://' . $Ip, (int)$Port, $ErrNo, $ErrStr, $Timeout );
这是此文件中唯一写入$this->socket
的行。
UDP套接字有时似乎已打开而没有错误, 即使远程主机无法访问。错误只会变成 当您向套接字读取数据或从套接字写入数据时显而易见。原因 这是因为UDP是一种“无连接”协议,这意味着 操作系统不会尝试建立链接 套接字直到它实际需要发送或接收数据。
情况可能就是这样。尽管无法访问ip adddress或端口,但仍会创建套接字。这会在尝试写入数据时导致错误消息。
因此,为了解决这个问题,您至少需要做以下事情:
我不知道正确的设置应该是什么。如果您已在外部服务器上安装该软件,请尝试使用本地计算机,以便验证IP地址和端口设置。
答案 1 :(得分:2)
如果您检查了PHP配置并且问题仍然存在,请检查防火墙日志。
正如Ignacio Vazquez-Abrams所说:这是一个操作系统错误。
就我而言,CSF阻止了传出连接。
答案 2 :(得分:-3)
似乎是权限错误,
尝试,
chmod -R folder_to_be_file_written
然后执行php脚本