4

我在 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 存在并更新)。

我的假设是 bin/release 在更改配置变量 BUILDPACK_URL 后未运行,因此未设置 PATH 变量。

为了使应用程序正常工作,我必须手动添加 PATH 配置变量。有没有其他人遇到过这个?这是预期的行为吗?据我了解, bin/release 应该始终在 slug 编译后运行?

编辑:将 git url 更正为正确的“.git”之一

4

2 回答 2

4

您的假设是正确的, 的addonsconfig_vars属性bin/release仅取自应用程序首次部署时的构建包。有关更多详细信息,请参阅https://devcenter.heroku.com/articles/buildpack-api#binrelease

Heroku 正在迁移到一个新系统,用于构建包以添加配置变量,这些配置变量在应用程序的第一次部署之后起作用:https ://devcenter.heroku.com/articles/labs-dot-profile-d

如果 buildpack 将 a 复制.profile.d/buildpack_name.sh到应用程序中,则该文件将在应用程序启动期间获取。这可用于设置诸如PATH.

于 2012-12-10T16:17:53.957 回答
0

您的应用程序存储库中可能有一个 Procfile。如果您有现有的 Procfile,则 bin/release 不会覆盖其内容。只需将适当的行 (5-9) 从https://github.com/iphoting/heroku-buildpack-php-tyler/blob/master/bin/release复制到您的 Procfile 中。

于 2012-12-10T16:07:57.407 回答