如何安装/启用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
这是我收到的错误消息:
谢谢
答案 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
的习惯除非您知道需要更新某些依赖项。)