当我使用 exec() 到 运行 时节点没有启动
node doesn't start when I use exec() to run it
我正在尝试创建一个网站,我可以在其中 运行 具有 php 的节点应用程序。它不应该结束,并且即使用户离开 php 页面,它也会永远在服务器上 运行。但是当我 运行 代码时,没有输出并且 node.js 服务(不和谐的机器人)没有 运行.
TestNode 是我的节点脚本的文件夹,里面有一个 index.js 和一些其他现在不重要的文件。 Node.exe 位于节点文件夹中。
实际命令确实有效,因为我打开了 cmd 并从我的脚本 (index.php).
的位置对其进行了测试
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Node</title>
</head>
<body>
<?php
$result = exec("cd TestNode && ..\node\node ..\TestNode\index.js 2>&1");
echo $result;
?>
</body>
</html>
记住,exec() returns 只是执行命令输出的最后一行。最好使用 shell_exec() (至少用于调试),因为它 returns 执行命令的所有输出。
第二件事是,PHP 从浏览器(通过网络服务器)执行,使用 www-data 用户和文件所在位置的默认路径。
我正在尝试创建一个网站,我可以在其中 运行 具有 php 的节点应用程序。它不应该结束,并且即使用户离开 php 页面,它也会永远在服务器上 运行。但是当我 运行 代码时,没有输出并且 node.js 服务(不和谐的机器人)没有 运行.
TestNode 是我的节点脚本的文件夹,里面有一个 index.js 和一些其他现在不重要的文件。 Node.exe 位于节点文件夹中。 实际命令确实有效,因为我打开了 cmd 并从我的脚本 (index.php).
的位置对其进行了测试<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Node</title>
</head>
<body>
<?php
$result = exec("cd TestNode && ..\node\node ..\TestNode\index.js 2>&1");
echo $result;
?>
</body>
</html>
记住,exec() returns 只是执行命令输出的最后一行。最好使用 shell_exec() (至少用于调试),因为它 returns 执行命令的所有输出。
第二件事是,PHP 从浏览器(通过网络服务器)执行,使用 www-data 用户和文件所在位置的默认路径。