需要 Heroku Laravel 4.2 Mcrypt PHP 扩展

mee*_*een 1 heroku heroku-toolbelt laravel-4

我是 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.
Run Code Online (Sandbox Code Playgroud)

我尝试使用heroku run bash命令连接到 heroku 环境,但无法获得 mcrypt 扩展的状态,因为没有授予我 root 权限。

还尝试设置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"
}
Run Code Online (Sandbox Code Playgroud)

任何帮助深表感谢。

Chr*_*ris 5

您还没有指定一个PHP版本,或在依赖mcrypt于您的扩展composer.json

首先取决于特定版本的 PHP:

composer require php ~7.1.0
Run Code Online (Sandbox Code Playgroud)

您可以替换~7.1.0~7.0.0~5.6.0如果您愿意。

如果您使用的是 PHP 5.6,Heroku默认包含mcrypt。但是,如果您使用的是 7.0 或 7.1,则需要添加它

composer require ext-mcrypt
Run Code Online (Sandbox Code Playgroud)

然后composer.lock通过运行更新你的composer update。确保一切都还在工作作为本地预期,然后提交更新composer.jsoncomposer.lock再次文件和推动的Heroku。

请注意,mcrypt扩展已从 PHP 7.1 开始弃用。可能值得考虑升级到 Laravel 5.1 或更高版本,并替换mcryptopenssl,尤其是当您使用 PHP 7.1 时。