Skip to content

ini_set('default_socket_timeout', ...) may be silently ignored in restricted PHP SAPI #220

Description

@chedong

问题描述

src/enhance.phpcallLLMEndpoint() 使用 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 的修复意图。

建议

  1. 添加注释说明此限制:// Note: may be ineffective if ini_set() is disabled in this SAPI
  2. 或考虑调用前后检查:if (ini_get(default_socket_timeout) < $timeout) { error_log(...); }

注意: 此函数 (callLLMEndpoint) 当前仍保留在 phpMan 源码中,但 LLM 增强功能已迁出到 doc-enhance 项目(见 01-PRODUCT.md §2.12)。如果此函数即将从 phpMan 中移除,则此 issue 的意义有限。

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions