You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Apache Web Server使用的Node.js版本至18或20?

解决Apache Web Server使用指定Node.js版本的问题

问题原因

Apache运行PHP时的环境变量和命令行用户(ubuntu/root)的环境变量不一致,导致默认调用系统自带的低版本Node.js(v10.19.0),而非nvm安装的v18或v20版本。

解决方案

方案一:PHP代码中直接指定Node绝对路径

修改你的PHP代码,将exec('node -v')替换为目标版本Node的绝对路径,比如使用root用户的v18版本:

<?php
$op=exec('/root/.nvm/versions/node/v18.20.0/bin/node -v');
$op1=exec('which /root/.nvm/versions/node/v18.20.0/bin/node');
echo "Node  version : $op";
echo "
 Node path : $op1";
echo "
User : ". get_current_user();
?>

或者使用ubuntu用户的v20版本:

<?php
$op=exec('/home/ubuntu/.nvm/versions/node/v20.11.1/bin/node -v');
$op1=exec('which /home/ubuntu/.nvm/versions/node/v20.11.1/bin/node');
echo "Node  version : $op";
echo "
 Node path : $op1";
echo "
User : ". get_current_user();
?>

方案二:修改Apache的环境变量

  1. 编辑Apache的环境配置文件(通常为/etc/apache2/envvars):
    sudo nano /etc/apache2/envvars
    
  2. 在文件末尾添加目标Node版本的路径到PATH变量中,比如添加v18的路径:
    export PATH="/root/.nvm/versions/node/v18.20.0/bin:$PATH"
    
    若选择v20版本,添加:
    export PATH="/home/ubuntu/.nvm/versions/node/v20.11.1/bin:$PATH"
    
  3. 保存文件后重启Apache服务:
    sudo systemctl restart apache2
    
  4. 重新运行PHP程序验证Node版本是否更新。

方案三:创建系统级Node软链接

  1. 删除系统默认的Node软链接(若存在):
    sudo rm /usr/bin/node
    
  2. 创建指向目标版本Node的软链接,比如v18:
    sudo ln -s /root/.nvm/versions/node/v18.20.0/bin/node /usr/bin/node
    
    或v20:
    sudo ln -s /home/ubuntu/.nvm/versions/node/v20.11.1/bin/node /usr/bin/node
    
  3. 验证软链接有效性:
    node -v
    
  4. 重启Apache服务后,PHP即可调用新的Node版本。

注意事项

如果选择使用ubuntu用户的Node版本,需确保Apache运行用户(通常为www-data)有权限访问该目录,可执行以下命令调整权限:

sudo chmod -R 755 /home/ubuntu/.nvm/versions/node/v20.11.1/bin/

内容的提问来源于stack exchange,提问作者neelam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 01:55:10