如何在 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