使用exec()在PHP中执行nodejs脚本文件
Executing nodejs script file in PHP using exec()
在我的应用程序中,我想从PHP执行一个Node.JS文件,该文件反过来向另一个PHP文件发出HTTP请求。
总之,这就是我正在做的过程。
PHP文件,在调用——比;Nodejs文件——>处理数据——>并向——>PHP文件
发出http请求当我通过终端运行nodejs文件时,它成功地向另一个PHP文件发出http请求,我得到了我想要的。
但是,当我尝试通过PHP运行nodejs文件时,nodejs文件无法找到一些模块。
我的PHP代码:
$nodeJsPath = '/var/www/html/projectfolder/js/nodefunc.js';
$ret = exec("node ".$nodeJsPath.' 2>&1', $out, $err);
这是我得到的错误:
Array
(
[0] => module.js:457
[1] => throw err;
[2] => ^
[3] =>
[4] => Error: Cannot find module 'some_module'
[5] => at Function.Module._resolveFilename (module.js:455:15)
[6] => at Function.Module._load (module.js:403:25)
[7] => at Module.require (module.js:483:17)
[8] => at require (internal/module.js:20:19)
[9] => at Object.<anonymous> (/var/www/html/projectfolder/js/nodefunc.js:5:9)
[10] => at Module._compile (module.js:556:32)
[11] => at Object.Module._extensions..js (module.js:565:10)
[12] => at Module.load (module.js:473:32)
[13] => at tryModuleLoad (module.js:432:12)
[14] => at Function.Module._load (module.js:424:3)
)
我终于明白了。由于未知的原因,它只是忽略了NODE_PATH
变量:(
在Nodejs文件中,我必须像这样给出模块的绝对路径:
var request = require("/usr/lib/node_modules/request");
您的目标是在更改目录后执行节点命令。因此,您需要通过PHP exec()函数运行多个顺序命令。
命令:
-
cd /var/www/html/projectfolder/js
-
node nodefunc.js 2>&1
这可以通过在命令之间添加&&或;实现。
$ret = exec("cd /var/www/html/projectfolder/js; node nodefunc.js 2>&1", $out, $err);
- 检查模块是否在位(
npm install
) - 在节点应用程序当前工作目录中运行
exec
:
exec("cd ". dirname($nodeJsPath). " && node nodefunc.js 2>&1", $out, $err);
相关文章:
- 如何在javasciipt中添加单引号到字符串,该字符串将在nodeJS中作为mysql插入命令执行
- Nodejs无法杀死Node自身执行的外部windows可执行程序
- 全局安装的NodeJS npm模块不执行节点的主/bin JavaScript文件
- NodeJS-如何为模块分配构造函数.导出自执行函数
- nodejs'exec'命令不't执行'sed'命令正确
- 在nodejs中执行procces数组时保存数据
- 如何在调用 responde.end() 后执行 NodeJS/connect 中间件
- nodejs:setImmediate 回调在 setTimeout(fn, 0) 之后执行,与 nodejs 文档描述
- 在循环完成 nodejs 请求之前执行回调
- 如何使用angularjs,nodejs和mysql执行CRUD操作
- 为什么 NodeJS 不像浏览器那样执行构造函数
- Nodejs.订阅 EventEmitter.emits 并仅在特定条件下执行
- 在 Nodejs 中,如果你先调用 cb,那么这会导致函数的其余部分执行吗?
- nodeJS中的承诺/承诺中的回调/执行顺序是不对的
- Nodejs 没有异步执行 promise 函数
- 我将如何从外部 URL 获取代码并在 NodeJS 中执行它
- 如何执行nodejs请求模块
- 使用exec()在PHP中执行nodejs脚本文件
- 无法执行nodejs简单ssh模块's.exec()方法
- 强制循环执行nodejs的顺序