如何在 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
【讨论】:
在 xampp 最新版本中你会发现 ;extension=sockets not this ;extension=php_sockets.dll 所以你需要删除 ;从 ;extension=sockets 并重新启动你的 apache。以上是关于如何在 PHP 中启用 Socket?的主要内容,如果未能解决你的问题,请参考以下文章
如何在linux上启用 nginx 的 socket 协议支持
phpwebsocket - 未定义函数 socket_create() - 在 Windows/WAMP 上启用 php_sockets