Каждый раз, когда я нажимаю кнопку update в phpservermonitor , появляется эта ошибка:
Предупреждение: socket_create (): невозможно создать сокет [1]: операция не разрешена в /var/www/html/phpservermon/src/psm/Util/Server/Updater/StatusUpdater.php в строке 154
Предупреждение: socket_set_option () ожидает, что параметр 1 будет ресурсом, логическое значение задано в /var/www/html/phpservermon/src/psm/Util/Server/Updater/StatusUpdater.php в строке 155
вот файл со всеми ошибками, которые он дает out, но основная из них - та, так как большинство ошибок, если не все, вызваны этой ошибкой.
Это изображение со всеми ошибками (я знаю, что не следует публиковать изображения ошибок, но я не хотел делать сообщение слишком большим)
Я перешел к рассматриваемому файлу в первая ошибка, но я мог понять только то, о чем мне уже говорила ошибка. Эта строка 154 (первая строка в следующем коде) не возвращалась так, как должна .
$socket = socket_create(AF_INET, SOCK_RAW, 1);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 10, 'usec' => 0));
socket_connect($socket, $this->server['ip'], null);
socket_send($socket, $package, strLen($package), 0);
if (socket_read($socket, 255)) {
$this->rtime = microtime(true) - $starttime;
$status = true;
} else {
$status = false;
}
socket_close($socket);
Пытался перейти на php.ini и включить сокеты , но ничего не изменилось
; Я удалил на php.ini:
;extension=php_soap.dll
extension=php_sockets.dll
;extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
PS: Я использую php5.6 и ubuntu 18.04 , также, если вы думаете, что лучше я просто напишу весь список ошибок говорят, что я отредактирую пост.
Изменить: Вот phpinfo, в котором разрешены сокеты
Как вы уже поняли, вам может потребоваться включить расширение сокетов. Однако то, как вы это сделали, неверно, поскольку вы включили расширение с именем php_sockets.dll
, которое используется только для установки PHP в Windows.
DLL является реализацией файлов общих библиотек в Windows.
Вместо этого в Ubuntu вы включаете расширение с помощью команды phpenmod <module>
.
Например, в вашем случае выполните следующую команду.
sudo phpenmod sockets
И перезапустите (или перезагрузите) Apache, чтобы изменения вступили в силу.
sudo apache2ctl restart