我使用cron定期运行php脚本:
*/5 * * * * php /path/to/my/script.php
在php脚本中,我有一个运行node:
的exec命令$command_str = 'node my_node_script.js';
exec($command_str, $output_arr, $error_res);
一切都在命令行上运行良好,但不是通过cron。所以我记录了输出,我收到以下错误:
sh: node: command not found
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:0)
为避免与其他软件包冲突,Debian开发团队决定使用/usr/bin/nodejs
作为node.js的路径。如果您使用的是Ubuntu或Debian,则应安装 node-legacy 包以使用node
命令调用nodejs:
sudo apt-get install nodejs-legacy
对于现代nodejs版本,您应该改为调用nodejs
命令或者安装nodejs的完整路径:
/usr/bin/nodejs my_script.js
or
/home/user/.nvm/vx.xx.xx/bin/node my_script.js
答案 1 :(得分:0)
我想通过John C的评论来解决这个问题。
我所做的是从命令行使用which node
来找出安装节点的位置(在我的例子中是usr/local/bin/node
),然后更新exec()调用以使用此绝对路径:
$command_str = '/usr/local/bin/node my_node_script.js';
exec($command_str, $output_arr, $error_res);
我希望如果你遇到这个挑战会有所帮助。