我在heroku上使用默认的buildpack(apache)创建了一个php应用程序,然后决定将其更改为php-fpm + nginx buildpack(https://github.com/iphoting/heroku-buildpack-php-tyler/)。
我发出了更改命令:
heroku config:set BUILDPACK_URL=https://github.com/iphoting/heroku-buildpack-php-tyler.git
并推动:
git push heroku master
然后编译slug,但所有二进制文件都无法使用“未找到命令”执行,因为不应更新应使用bin / release更新的PATH配置变量。
相比之下,使用
这个buildpack从头开始创建应用程序时heroku create -b https://github.com/iphoting/heroku-buildpack-php-tyler.git
一切都按预期运行(并且PATH存在并更新)。
我的假设是在更改配置变量BUILDPACK_URL后没有运行bin / release,因此未设置PATH变量。
为了使应用程序正常工作,我不得不手动添加PATH配置变量。有没有人见过这个?这是预期的行为吗?根据我的理解,bin / release应该总是在slug编译后运行?
编辑:将git网址更正为正确的“.git”一个
答案 0 :(得分:4)
您的假设是正确的,addons
的{{1}}和config_vars
属性仅取自应用首次部署的buildpack。有关详细信息,请参阅https://devcenter.heroku.com/articles/buildpack-api#binrelease。
Heroku正在转移到一个新系统,用于构建包以添加将在应用首次部署之后工作的配置变量:https://devcenter.heroku.com/articles/labs-dot-profile-d
如果buildpack将bin/release
复制到应用程序中,则该文件将在应用程序启动期间获取。这可用于设置.profile.d/buildpack_name.sh
。
答案 1 :(得分:0)
您的应用程序存储库中可能有一个Procfile。如果您有现有的Procfile,则bin / release不会覆盖其内容。只需将https://github.com/iphoting/heroku-buildpack-php-tyler/blob/master/bin/release中相应的行(5-9)复制到Procfile中即可。