【发布时间】:2015-04-15 14:10:18
【问题描述】:
我最近用 Phusion Passenger 为 nginx 部署了一个节点应用程序,在这个过程中遇到了一个非常古怪的错误:
我的代码在尝试生成 child_process 时出错。我做了一些调试,最终得出结论,问题出在节点中未定义的$PATH 环境变量,我可以使用这样的passenger_env_var 指令解决问题(显示我的nginx 配置的摘录):
server {
listen 80;
server_name blargh.com;
root /home/user/blargh.com/build;
passenger_enabled on;
# For some reason $PATH isn't loaded into node, and we can't spawn child processes without it
passenger_env_var PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games;
}
我仍然没有弄清楚是什么导致了这个问题 - 设置 passenger_load_shell_envvars on; 没有帮助,并且 www-data 用户确实在 shell 中定义了 $PATH envvar。此外,其他环境变量(如$SHELL)似乎已经被节点加载,增加了为什么$PATH被排除在外的谜团。
有谁知道是什么导致了这个问题?
【问题讨论】: