Heroku Laravel 4.2需要Mcrypt PHP扩展

时间:2017-02-18 17:38:38

标签: heroku laravel-4 heroku-toolbelt

我是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"
}

非常感谢任何帮助。

1 个答案:

答案 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.jsoncomposer.lock文件并再次推送到Heroku。

请注意the mcrypt extension has been deprecated as of PHP 7.1。可能值得考虑升级到Laravel 5.1或更高版本replaces mcrypt with openssl,特别是如果你正在使用PHP 7.1。