如果在代码中使用CURLOPT_TCP_FASTOPEN选项,则会得到以下错误。
未定义常数CURLOPT_TCP_FASTOPEN的使用-假定为“CURLOPT_TCP_FASTOPEN”
CURLOPT_TCP_FASTOPEN是php 7.4.5 接口中支持的选项。
php -v
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
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
发布于 2020-05-14 06:41:15
问题是,在默认情况下,直到内核版本3.13才启用tcp快速打开。
要在Centos 7上启用TCP快速打开:
1.在sysctl.d中添加tcp_fastopen
echo "net.ipv4.tcp_fastopen=3" > /etc/sysctl.d/30-tcp_fastopen.conf 2.重新启动sysctl
systemctl restart systemd-sysctl3.验证tcp_fastopen系统的设置
cat /proc/sys/net/ipv4/tcp_fastopen应该输出3
发布于 2020-05-12 16:19:21
我选择用一种更广泛的方式回答,希望在他们遇到与此相关的问题时帮助更多的人,而谷歌则是为了寻找答案。
(注意:运行时和加载的扩展在CLI和从when服务器访问时可能不同)。
该功能的系统要求是什么?
您想要使用的特性CURLOPT_TCP_FASTOPEN有一些必须满足的系统需求。
它们如下:
Kernel version > 3.6 (linux)PHP 7.0.7或更高的Curl(program) AND php{your/version}-curl 7.49.0或更高的*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扩展名。
https://stackoverflow.com/questions/61650504
复制相似问题