如何全局设置或规避CURLOPT_CONNECTTIMEOUT in PHP?

How to set or circumvent CURLOPT_CONNECTTIMEOUT in PHP globally?

有没有办法为所有 cURL 请求全局设置 CURLOPT_CONNECTTIMEOUT

我有一个问题,在升级到 PHP 7.2 后,一些软件的 cURL 现在会在 10 秒连接超时时失败,而以前不会。我不能确切地说是什么改变了这种行为,但我需要以某种方式全局设置 a) 导致它现在超时的原因,或者 b) 增加超时限制。

任何 php.ini 设置都会影响这个?

编辑: 设置 default_socket_timeout 似乎对此没有影响。

编辑: 仅供参考,具有更多 Wordpress 细节的相同问题:https://wordpress.stackexchange.com/questions/330013/curl-28-error-after-switch-from-to-brew-php-7-2-on-localhost

Any php.ini settings that can affect this?

不这么认为。如果您安装了 PCEL Runkit 并且 runkit.internal_override=1 在 php.ini 中,那么您可以将其添加到 auto_prepend_file php.ini 文件中,这应该使您自己的超时成为全局默认值:

<?php
runkit_function_rename('curl_init','curl_original_init');
runkit_function_add ( 'curl_init' , '$url=null','$ch=curl_original_init($url);curl_setopt_array($ch,array(CURLOPT_TIMEOUT=>100,CURLOPT_CONNECT_TIMEOUT=>100));return $ch;');
  • 请注意,许多人会认为这是 an evil hack,技术上改变了 php 内置函数的行为 n 所有..