如何在Heroku上安装mbstring Extension?

Loa*_*ati 2 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": "*"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

heroku run composer update
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误消息:

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

谢谢

Chr*_*ris 5

Heroku的文件系统是短暂的.您的Dyno旋转后对它所做的任何更改都可能随时丢失.这种情况每天至少发生一次,可能更频繁.

另外,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除非您知道需要更新某些依赖项.)