【问题标题】:How to Install mbstring Extension on Heroku?如何在 Heroku 上安装 mbstring 扩展?
【发布时间】: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。
  • 非常感谢。请将您的答案作为个人回复发布,以便我标记为正确

标签: php heroku


【解决方案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 的习惯,除非您知道需要这样做更新一些依赖项。)

【讨论】:

    猜你喜欢
    • 2015-01-29
    • 2017-01-26
    • 2015-04-30
    • 2011-06-14
    • 1970-01-01
    • 2015-11-25
    • 2015-04-28
    • 2017-05-13
    • 2012-05-03
    相关资源
    最近更新 更多