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

如何在Heroku部署含Node-PHP-Runner的Node.js应用并解决PHP未找到错误

解决Heroku上Node.js应用使用Node-PHP-Runner时找不到PHP的问题

问题根源

错误提示/bin/sh: 1: php: not found明确说明Heroku的Node.js构建环境中未安装PHP运行时。你提到添加官方PHP构建包后Node.js无法正常工作,大概率是构建包顺序错误或缺少PHP构建包所需的触发文件导致的冲突。

可行解决方案

方案1:正确配置多构建包(推荐)

Heroku支持同时使用多个构建包,调整顺序并补充必要文件即可避免冲突:

  1. 清空现有构建包:
heroku buildpacks:clear
  1. 先添加Node.js构建包(确保Node环境优先配置):
heroku buildpacks:add heroku/nodejs
  1. 再添加PHP构建包:
heroku buildpacks:add heroku/php
  1. 在项目根目录创建空的composer.json文件(PHP构建包需要该文件触发构建流程):
{}
  1. 提交更改并重新部署:
git add composer.json
git commit -m "Add composer.json to enable PHP buildpack"
git push heroku main

部署完成后,Heroku会先配置Node.js环境,再安装PHP运行时,两者可以共存。

方案2:手动在Node构建流程中安装PHP

如果多构建包方案仍有冲突,可以通过postinstall脚本手动安装PHP二进制文件:

  1. 在package.json的scripts中添加postinstall命令:
"scripts": {
  "start": "node node_server.js",
  "postinstall": "curl -sSL https://github.com/mlocati/php-buildpack/releases/latest/download/php.tar.gz | tar -xzf - -C /tmp && ln -s /tmp/php/bin/php /app/bin/php"
}
  1. 在Node代码中指定PHP的路径:
const php = require('php');
// 指定手动安装的PHP路径
php.bin = '/app/bin/php';
  1. 提交更改并重新部署。

方案3:指定PHP构建包的绝对路径

如果已经安装了PHP构建包但Node-PHP-Runner找不到PHP,可以在代码中直接指定Heroku PHP构建包的默认路径:

const php = require('php');
// Heroku PHP构建包的默认PHP路径
php.bin = '/app/.heroku/php/bin/php';

可以通过Heroku控制台执行which php命令确认实际路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:55:20