问题描述
src/enhance.php 中 callLLMEndpoint() 使用 ini_set() 来防止 PHP 的 default_socket_timeout 抢占 CURLOPT_TIMEOUT:
ini_set(default_socket_timeout, max($timeout + 30, 900));
风险
在某些 PHP SAPI 配置下,ini_set() 可能被静默忽略:
- PHP-FPM 配置了
disable_functions=ini_set
open_basedir 限制
- CGI/FastCGI 模式下 PHP 已初始化后调用
此时 default_socket_timeout 保持 60s 默认值,仍可能先于 CURLOPT_TIMEOUT 触发超时,违背本 commit 的修复意图。
建议
- 添加注释说明此限制:
// Note: may be ineffective if ini_set() is disabled in this SAPI
- 或考虑调用前后检查:
if (ini_get(default_socket_timeout) < $timeout) { error_log(...); }
注意: 此函数 (callLLMEndpoint) 当前仍保留在 phpMan 源码中,但 LLM 增强功能已迁出到 doc-enhance 项目(见 01-PRODUCT.md §2.12)。如果此函数即将从 phpMan 中移除,则此 issue 的意义有限。
问题描述
src/enhance.php中callLLMEndpoint()使用ini_set()来防止 PHP 的default_socket_timeout抢占CURLOPT_TIMEOUT:风险
在某些 PHP SAPI 配置下,
ini_set()可能被静默忽略:disable_functions=ini_setopen_basedir限制此时
default_socket_timeout保持 60s 默认值,仍可能先于CURLOPT_TIMEOUT触发超时,违背本 commit 的修复意图。建议
// Note: may be ineffective if ini_set() is disabled in this SAPIif (ini_get(default_socket_timeout) < $timeout) { error_log(...); }注意: 此函数 (
callLLMEndpoint) 当前仍保留在 phpMan 源码中,但 LLM 增强功能已迁出到doc-enhance项目(见01-PRODUCT.md§2.12)。如果此函数即将从 phpMan 中移除,则此 issue 的意义有限。