node.js调用php报“call to undefined function”是php cli环境扩展未启用所致,需检查php.ini配置、确认cli与web环境差异、验证php路径及扩展依赖。
Node.js 调用 PHP 时提示 “Call to undefined function”
这通常不是 Node.js 的问题,而是 PHP 进程(比如 php-cgi 或 exec('php'))运行时缺少扩展。Node.js 只是执行了 PHP 命令,真正的报错来自 PHP 解释器本身。
常见触发场景:Node.js 用 child_process.exec 调 php script.php,而 script.php 用了 json_encode() 却报错——说明连 json 扩展都没加载(虽然现代 PHP 默认启用,但 CLI SAPI 有时被单独配置)。
- 先确认 PHP CLI 使用的配置文件:
php -i | grep "Loaded Configuration File" - 再检查该
php.ini中是否启用了对应扩展,例如:extension=json(PHP 8+ 可能是extension=php_json.dll或extension=json.so) - 注意 CLI 和 Web(如 Apache/FPM)可能加载不同
php.ini,php -m看的是 CLI 模块列表,必须和 Node.js 调用的 PHP 一致
如何验证 Node.js 实际调用的是哪个 PHP?
Node.js 不会自动继承你终端里 which php 的结果,尤其是用 PM2、systemd 或 Docker 启动时,PATH 可能被重置。