我是Heroku的新手,我知道很多类似的问题已经在stackoverflow上被问过,但我找不到任何适合我的解决方案。
尝试部署laravel 4.2应用程序时出现以下问题:
remote: > php artisan clear-compiled
remote: Mcrypt PHP extension required.
remote: Script php artisan clear-compiled handling the post-install-cmd event returned with error code 1
remote: ! Push rejected, failed to compile PHP app.
我尝试使用heroku run bash
命令连接到heroku环境,但由于没有授予root权限,因此无法获取mcrypt扩展的状态。
还尝试将heroku buildpacks:set https://github.com/heroku/heroku-buildpack-php
设置为buildpack。但没有成功。
这是我的composer.json
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"laravel/framework": "4.2.*"
},
"autoload": {
"classmap": [
"app/commands",
"app/library",
"app/controllers",
"app/models",
"app/Lib.php",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "stable"
}
非常感谢任何帮助。
答案 0 :(得分:3)
您尚未在mcrypt
中指定PHP版本或对composer.json
扩展程序的依赖关系。
首先取决于特定版本的PHP:
composer require php ~7.1.0
如果您愿意,可以将~7.1.0
替换为~7.0.0
或~5.6.0
。
Heroku includes mcrypt
by default如果您使用的是PHP 5.6。但是,如果您使用的是7.0或7.1,那么need to add it
composer require ext-mcrypt
然后运行composer.lock
更新您的composer update
。确保所有内容仍然按预期在本地运行,然后提交更新的composer.json
和composer.lock
文件并再次推送到Heroku。
请注意the mcrypt
extension has been deprecated as of PHP 7.1。可能值得考虑升级到Laravel 5.1或更高版本replaces mcrypt
with openssl
,特别是如果你正在使用PHP 7.1。