首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义常量CURLOPT_TCP_FASTOPEN的使用

未定义常量CURLOPT_TCP_FASTOPEN的使用
EN

Stack Overflow用户
提问于 2020-05-07 05:27:31
回答 2查看 1.4K关注 0票数 7

如果在代码中使用CURLOPT_TCP_FASTOPEN选项,则会得到以下错误。

未定义常数CURLOPT_TCP_FASTOPEN的使用-假定为“CURLOPT_TCP_FASTOPEN”

CURLOPT_TCP_FASTOPEN是php 7.4.5 接口中支持的选项。

php -v

代码语言:javascript
复制
PHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies

卷曲-V

代码语言:javascript
复制
curl 7.70.0 (x86_64-redhat-linux-gnu) libcurl/7.70.0 NSS/3.44 zlib/1.2.7 libpsl/0.7.0 (+libicu/50.1.2) libssh2/1.9.0 nghttp2/1.31.1
Release-Date: 2020-04-29
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS GSS-API HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz Metalink NTLM NTLM_WB PSL SPNEGO SSL UnixSockets

我在这里做错什么了?

编辑1:

以下是与YouriKoeman概述相对应的其他信息

内核版本: 3.10.0-1062.12.1.el7.x86_64

操作系统: unix (Centos 7.x)

curl --tcp-fastopen -L http://www.google.com返回以下错误:

curl: (55) Send failure: Operation not supported for curl --tcp-fastopen -L http://www.google.com

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-14 06:41:15

问题是,在默认情况下,直到内核版本3.13才启用tcp快速打开。

要在Centos 7上启用TCP快速打开:

1.在sysctl.d中添加tcp_fastopen

代码语言:javascript
复制
echo "net.ipv4.tcp_fastopen=3" > /etc/sysctl.d/30-tcp_fastopen.conf 

2.重新启动sysctl

代码语言:javascript
复制
systemctl restart systemd-sysctl

3.验证tcp_fastopen系统的设置

cat /proc/sys/net/ipv4/tcp_fastopen应该输出3

票数 5
EN

Stack Overflow用户

发布于 2020-05-12 16:19:21

我选择用一种更广泛的方式回答,希望在他们遇到与此相关的问题时帮助更多的人,而谷歌则是为了寻找答案。

(注意:运行时和加载的扩展在CLI和从when服务器访问时可能不同)。

该功能的系统要求是什么?

您想要使用的特性CURLOPT_TCP_FASTOPEN有一些必须满足的系统需求。

它们如下:

  1. 你一定有Kernel version > 3.6 (linux)
  2. 您必须有PHP 7.0.7或更高的
  3. 您必须有Curl(program) AND php{your/version}-curl 7.49.0或更高的
  4. 您必须拥有*nix类型的操作系统(macos、linux、bsd)。

如何调试哪些需求未被满足?

没有定义常量这一事实是一个危险信号,即这些依赖项中的一个没有得到满足,但是我如何确定哪一个呢?

内核版本

这个操作很简单,运行以下命令:uname -r

它必须大于3.6

Curl版本和构建选项

检查功能是否可用的最佳方法是使用以下选项从cli调用curl,如:curl --tcp-fastopen -O http://google.com

如果此请求成功执行,则curl在您的系统上被正确配置,因此问题在php中。

PHP版本和扩展

用于For服务器

使用phpinfo()检查php version是否大于7.0.7,是否加载了php-curl扩展

为CLI

在命令行类型php -v中,版本应该大于7.0.7

要在命令行php -m | grep curl中检查扩展类型,这个命令应该返回curl,如果什么都不返回,则没有加载php的curl扩展名。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61650504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档