2015-12-20 67 views
0

我使用cron来定期运行PHP脚本:运行cron作业里面的exec()函数找不到命令

*/5 * * * * php /path/to/my/script.php 

里面的PHP脚本我有一个运行的exec命令节点:

$command_str = 'node my_node_script.js'; 
exec($command_str, $output_arr, $error_res); 

一切工作在命令行很好,但不是通过cron。所以,我记录的输出,并且我收到以下错误:

sh: node: command not found 

这究竟是为什么,以及如何解决呢?

+2

查看[“通过cron运行脚本时找不到命令”](http://askubuntu.com/questions/47800/command-not-found-when-running-a-script-via-cron ) - 我会将其标记为一个复制品,但它位于不同的网站上。 –

回答

0

为避免与其他软件包发生冲突,Debian dev团队决定使用/usr/bin/nodejs作为node.js的路径。如果你正在使用Ubuntu或Debian的,你应该安装节点遗留包使用的NodeJS命令node打电话:

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在命令行中找到o哪些想通了这一点感谢评论UT里节点安装(在我的情况下,它是usr/local/bin/node),然后更新的exec()调用来使用这个绝对路径:

$command_str = '/usr/local/bin/node my_node_script.js'; 
exec($command_str, $output_arr, $error_res); 

我希望,如果你遇到这样的挑战,它帮助。