每次我点击更新按钮php服务器监控它给出了这个错误:
警告: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 行中给出布尔值
这里有一个文件,其中包含它给出的所有错误,但主要错误是那个,因为大多数错误(如果不是全部)都是由这个引起的。
这是一张包含所有错误的图片 (我知道不应该发布错误的图片,但我不想让帖子太大)
我转到第一个错误中所涉及的文件,但只能弄清楚错误已经告诉我的内容。第 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,如果您认为我最好写下整个错误列表,请告诉我,我会编辑该帖子。
答案1
正如您所想,您可能需要启用套接字扩展。但是,您这样做的方式是错误的,因为您启用了一个名为的扩展,php_sockets.dll
该扩展仅用于 PHP 的 Windows 安装。
动态链接库是共享库文件的Windows实现。
相反,在 Ubuntu 中,您可以使用命令启用扩展phpenmod <module>
。
例如,在您的情况下,运行以下命令。
sudo phpenmod sockets
并重新启动(或重新加载)Apache 以使更改生效。
sudo apache2ctl restart