问题描述
当我使用官方 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 (将#修改为@)