如何在 Heroku 上安装 mbstring 扩展?

Posted

技术标签:

【中文标题】如何在 Heroku 上安装 mbstring 扩展?【英文标题】:How to Install mbstring Extension on Heroku? 【发布时间】:2017-05-09 07:13:02 【问题描述】:

如何安装/启用 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 扩展。

谢谢

【问题讨论】:

请出示您的composer.json文件。 请再检查一遍 看起来应该可以了……您的 composer.lock 文件是最新的(并由 Git 跟踪)吗? 我没有 gitignore 文件,所以我猜它被跟踪了。我尝试更新作曲家,但它提示未启用或安装 mbstring。 非常感谢。请将您的答案作为个人回复发布,以便我标记为正确 【参考方案1】:

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

另外,composer update 是我建议不要在服务器上运行的东西。此命令会安装适合 composer.json 中的每个库的最新可用版本(或特定库,如果您只有 update 特定库)。如果您在composer.json 中要求~1.2,您可能会在开发机器上得到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 的习惯,除非您知道需要这样做更新一些依赖项。)

【讨论】:

以上是关于如何在 Heroku 上安装 mbstring 扩展?的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 ec2 上安装 php-mbstring 的依赖问题

如何在 Nitrous.io 中为 PHP 安装 mbstring?

尝试在 ubuntu 20.04 上安装 php-mbstring

安装 Laravel 时出现 Composer 错误:缺少“mbstring”?

如何在 Heroku 上正确安装 PyICU?

如何在 Heroku 上正确安装 PyICU?