PHP Exec 在尝试使用 NodeJS 创建到 MySQL 数据库的连接时挂起

PHP Exec hangs when trying to use NodeJS to create a connection to a MySQL database

我正在尝试 运行 以下 NodeJS 脚本来创建到 MySQL 数据库的连接并执行一些任务:

var mysql = require('mysql');

var con = mysql.createConnection({
    host: "url",
    user: "xxx",
    password: "yyy",
    database: "zzz"
});

con.connect(function(err) {
    if (err) console.log(err);
    else console.log("Success");
});

当此脚本来自 Ubuntu 终端 运行 时,它按预期工作,但是当我尝试使用 PHP 中的 exec 函数以下列方式执行相同操作时:

$execString = "/usr/bin/node /home/user/sampleProject/example.js";          
exec($execString, $output);

程序挂起,未返回预期的“成功”消息。

我启用并检查了 MySQL 日志,并验证了在使用 exec 函数调用脚本时数据库确实收到了连接请求,但由于某种原因它永远不会完成并继续执行直到它超时。

任何关于为什么会发生这种情况的想法或帮助将不胜感激。

我怀疑,如果上面的代码本身导致错误,那么连接代码是异步的并导致回调的事实可能是 exec 方法的问题。

但是...您确定需要通过 PHP 触发吗? NodeJS 可以像 PHP 一样直接充当 API 端点。您可以直接公开它,而不是通过 PHP。或者至少将它公开为端点,然后通过 HTTP 从 PHP.

调用它