Heroku部署PHP Hello World应用报Application Error无法启动
故障核心原因
你部署触发应用错误的直接原因是根目录下的package.json打乱了Heroku的项目类型自动识别逻辑:
- Heroku会根据根目录的特征文件判定项目技术栈,只要检测到
package.json存在,就会优先将项目识别为Node.js应用,不会加载PHP构建环境,自然也不会解析运行你的index.php文件。 - 你当前编写的
package.json没有定义Node.js应用的启动入口、依赖项,平台按Node.js流程启动时找不到运行命令,直接启动失败。
修复操作步骤
按顺序执行以下操作即可正常部署:
- 删除项目根目录下你自行创建的
package.json文件,不要保留该文件。 - 确认你的
index.php直接存放在项目根目录(不要嵌套在任何子文件夹内),你写的Hello World代码本身没有语法问题,无需修改。 - 为了彻底避免平台识别偏差,在项目根目录新建无后缀的
Procfile文件,写入以下内容,强制指定用PHP Apache服务运行应用:
web: vendor/bin/heroku-php-apache2
- 将上述修改提交后重新推送到Heroku远端,等待部署流程走完即可正常访问,页面会正常输出Hello World。
补充说明:之前讲师提到的部分学生遇到识别问题需要补文件的场景,对应的是上面提到的Procfile配置,不是让你加
package.json。乱加其他技术栈的特征文件,只会让平台的自动识别逻辑完全走偏。
内容的提问来源于stack exchange,提问作者Zer0C00l
相关产品推荐
相关产品推荐

