如何在Heroku上安装mbstring Extension?

时间:2016-12-23 15:14:00

标签: php heroku

如何安装/启用PHP扩展名mbstring?

Heroku在其文档中说它默认是共享的,并且应该在Composer包需要它时启用。我尝试在composer.json文件中添加它,但没有任何改变。

这是我的项目的composer.json:

{
    "require": {
        "fabpot/goutte": "^3.2",
        "guzzlehttp/guzzle": "^6.2",
        "paquettg/php-html-parser": "^1.7",
        "ext-mbstring": "*"
    }
}

添加最后一个依赖项后,我跑了:

heroku run composer update

这是我收到的错误消息:

  • 系统中缺少所请求的PHP扩展名ext-mbstring *。安装或启用PHP的mbstring扩展。

谢谢

1 个答案:

答案 0 :(得分:5)

Heroku的文件系统is ephemeral。您的Dyno旋转后对它所做的任何更改都可能随时丢失。发生这种情况at least once per day, and possibly much more frequently

此外,composer update是我建议不要在服务器上运行的东西。此命令将安装适合update中所有内容的每个库的最新可用版本(如果只有composer.json特定库,则为特定库)。如果您在~1.2中要求composer.json,您可能会在开发计算机上获得1.2.1,但1.2.9正在制作中。这可能会导致一些棘手的错误。

composer install命令会安装composer.lock文件中定义的确切版本。在服务器上运行要安全得多,但它确实意味着您必须在本地更新锁文件并将其推送到服务器。

由于这两个原因,您应该在本地运行composer update 。这将更新composer.lock,然后应该提交并推送到Heroku。 Heroku将运行composer install,你应该全力以赴。

(或者,您也应该能够运行composer update 'ext-mbstring'以保留其余的依赖项。请注意composer update,并尝试养成使用composer install的习惯除非您知道需要更新某些依赖项。)