如何在 PHP 中启用 Socket?

Posted

技术标签:

【中文标题】如何在 PHP 中启用 Socket?【英文标题】:How to enable Socket in PHP? 【发布时间】:2010-11-24 14:50:25 【问题描述】:

谁能告诉我如何在 php 中启用 SOCKET 支持?

【问题讨论】:

【参考方案1】:

此答案假定您确实有一个可访问的 php_sockets.dll 扩展文件(在您的 PHP 安装扩展目录或需要的地方);

如果您使用的是 Windows,只需在您的 php.ini 文件中取消注释以下行:

;extension=php_sockets.dll

如果您缺少php_sockets.dll,可以从php.net 下载。

【讨论】:

我有一台运行网站的 linux godadday 机器。如何在那里启用套接字编程? @user1051505 您可能会发现 GoDaddy 论坛中的 this discussion 会有所帮助。 我正在使用 XAMPP,但我收到了 "Call to undefined function socket_create()..." 错误。虽然我有php_sockets.dll 文件,但extension=php_sockets.dll 并未添加到php.ini。我不得不手动添加它。现在,它正在工作。 在 xampp 服务器中,它的 ;extension=sockets。这有帮助。【参考方案2】:

此处描述的套接字函数是 PHP 扩展的一部分,必须在编译时通过提供 --enable-sockets 选项进行配置来启用。

来自extension's documentation。

【讨论】:

【参考方案3】:

对于那些在安装 RabbitMQ php 库时遇到此问题的人

问题 1

php-amqplib/php-amqplib ^2.11 的安装请求 -> 可满足 通过 php-amqplib/php-amqplib[v2.11.0]。 php-amqplib/php-amqplib v2.11.0 需要 ext-sockets * -> 您的系统中缺少请求的 PHP 扩展套接字。

解决方案

通过 php.init 将 ;extension=sockets 更改为 extension=sockets

Screenshot

注意事项:

不是sockets.dll,只有sockets

【讨论】:

好吧,我没有用这个答案解决我的类似问题,但是这个答案是真的,我解决了它然后看到了这个答案。傻我:) 嘿兄弟,谢谢你的评论,是的,让我们解决更多问题。 请注意,它可能位于单独的 .ini 文件中。您可以使用php --ini 列出所有加载的文件。就我而言,我在20-sockets.ini.【参考方案4】:

PHP Docker 镜像附带 3 个帮助脚本命令,可以更轻松地安装和配置扩展:

docker-php-ext-configure:此命令允许您提供 扩展的自定义参数。 docker-php-ext-install:用这个 在容器中安装新扩展的命令。 docker-php-ext-enable:该命令可用于启用PHP 扩展名。

运行

docker-php-ext-install sockets

参考:https://confluence.atlassian.com/bitbucket/php-with-bitbucket-pipelines-873907835.html#PHPwithBitbucketPipelines-InstallandenablePHPextensions

【讨论】:

如果您使用 docker,这是正确的答案 这显示了很多错误。 /usr/src/php/ext/sockets/sendrecvmsg.c:128:19: 错误: 'sizeof' 的无效应用, /usr/src/php/ext/sockets/sendrecvmsg .c:129:36: error: 'SCM_CREDS' undeclared, 最后:make: *** [Makefile:213: sendrecvmsg.lo] Error 1 (PHP 8.1 x64 )【参考方案5】:

这里是新手说明

在windows中进入你的php安装目录,可能是这样的c:\xampp\php

里面的goto ext方向php\ext\

检查您的目录中是否有 php_sockets.dll 之后打开 php.ini 文件,该文件将在您的 php 文件夹中 接下来搜索;extension=php_sockets.dll

如果你找到它,然后从中删除 ;

如果找不到,请搜索extension=

然后在一些扩展名下添加extension=php_sockets.dll

最后重新启动您的 apache。

【讨论】:

在 xampp 最新版本中你会发现 ;extension=sockets not this ;extension=php_sockets.dll 所以你需要删除 ;从 ;extension=sockets 并重新启动你的 apache。

以上是关于如何在 PHP 中启用 Socket?的主要内容,如果未能解决你的问题,请参考以下文章

如何在linux上启用 nginx 的 socket 协议支持

我如何在 lighttpd 服务器上启用套接字

phpwebsocket - 未定义函数 socket_create() - 在 Windows/WAMP 上启用 php_sockets

如何在 php.ini 中启用 imap

如何在 PHP / XAMPP 中启用 cURL

如何在 PHP / XAMPP 中启用 cURL