如何解决PHP socket_send() 标志是一个未定义的常量 MSG_OOB、MSG_EOR、MSG_EOF、MSG_DONTROUTE
当我使用官方 docker 镜像 php:7.3-cli-buster 时,我收到如下警告:
警告:未捕获的错误:php shell 中未定义的常量“MSG_OOB” 代码:1 堆栈跟踪: #0 {main} 在第 1 行的 php shell 代码中抛出
对于每个常量:
<?php
echo "MSG_OOB: " . \MSG_OOB;
echo "MSG_EOR: " . \MSG_EOR;
echo "MSG_EOF: " . \MSG_EOF;
echo "MSG_DONTROUTE: " . \MSG_DONTROUTE;
在 socket_send 的文档中 flags
部分下列出的但是当我使用安装在 Windows 上的 PHP 7.0.10 (cli) 时(不是作为 docker 镜像) 定义了这两个
MSG_OOB: 1
MSG_DONTROUTE: 4
另外两个生成相同的警告。
我在网上看到很多例子都使用 int = 0 作为
的强制标志socket_send ( 套接字 $socket,字符串 $data,int $length,int $flags ) : int|false
但还没有看到任何带有标志及其解释的示例。
我想问一下
- 我做错了什么吗?所有这些标志都应该在 PHP 的 cli 版本下可用吗?
- 如果任何标志不可用,例如由于系统缺乏对某个选项的支持,它是否仍应在 PHP 中预先定义?除非文档中另有明确说明,否则我希望在启动脚本时定义所有常量,尽管它们的目的是定义。
- 这是 PHP 的错误还是文档不是最新的?
- 如果您使用 int = 0 代替标志参数,那么它代表什么标志? (当然不是 MSG_OOB,MSG_DONTROUTE)
- 实际上标志参数是否会影响函数调用,在我看来它现在可能只是一个存根?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。