2012-08-28 5 views
3

Я получаю следующее из сценария Я пытаюсь запустить:FWRITE() не допускается, но phpinfo() говорит, что это должно быть

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

Что вы пишете? – nneonneo

+2

Это ошибка ОС, а не ошибка двигателя PHP. –

ответ

4

fwrite() пишет в $this->socket и находится в private function WriteData(). В public function Connect() является линия

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

Это единственная строка в этом файле, где $this->socket написано.

Кроме того, есть предупреждение в manpage for fsockopen()

UDP сокеты иногда по-видимому, открыт без ошибок, даже если удаленный хост недоступен. Ошибка будет только очевидна при чтении или записи данных в/из сокета. Причина заключается в том, что UDP является протоколом «без установления соединения», что означает, что операционная система не пытается установить связь для сокета до тех пор, пока на самом деле не потребуется отправлять или получать данные.

Возможно, это так. Сокет создан, хотя ip adddress или порт недоступен. Это приводит к появлению сообщения об ошибке при попытке записи данных.

Так что для того, чтобы решить эту проблему, вам нужно будет сделать, по крайней мере, эти вещи:

  • Убедитесь, что адрес IP и порт правильны.
  • Проверьте, что сервер запущен и работает.
  • Убедитесь, что адрес IP и порт достижимы (не заблокированы в любых брандмауэрах)

Я не знаю, что правильные настройки должны быть. Если вы установили программное обеспечение на внешний сервер, попробуйте также использовать локальный компьютер, чтобы вы могли проверить параметры ip-адреса и порта.

-3

Похоже ошибки доступа,

Try,

chmod -R folder_to_be_file_written 

Затем выполните скрипт

2

Если вы проверили конфигурацию PHP и проблема не устранена, проверьте журнал брандмауэра.

Как заявил Игнасио Васкес-Абрамс: это ошибка ОС.

В моем случае CSF блокировал исходящие соединения.

Смежные вопросы