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

Solutions Collecting From Web of "fwrite () не разрешено, но phpinfo () говорит, что это должно быть"

fwrite() записывает в $this->socket и находится в private function WriteData() . В public function Connect() – это строка

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

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

Кроме того, на man- fsockopen() есть предупреждающее сообщение для fsockopen()

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

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

Поэтому, чтобы разрешить это, вам нужно будет выполнить хотя бы эти вещи:

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

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

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

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

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

Похоже на ошибку разрешения,

Пытаться,

  chmod -R folder_to_be_file_written 

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