2017-02-18 4 views
1

Я новичок в Heroku, и я знаю, что многие подобные вопросы были заданы для stackoverflow для этого, но я не мог найти решение, которое работает для меня.Heroku Laravel 4.2 Mcrypt Требуется расширение PHP

Я получаю следующую проблему при попытке развернуть мой 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 с heroku run bash команды, но не могу получить статус расширения 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

Пожалуйста, отредактируйте ваш вопрос и добавьте свой 'composer.json'. – Chris

+0

@ Chris, обновленный вопрос с composer.json – meen

ответ

3

Вы не указали версию PHP или зависимость от расширения mcrypt в своем 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.

+0

Этот ответ заслуживает +20 репутации в моей книге. Мне потребовалось несколько часов, чтобы найти это решение. Большое спасибо Крису! :-) –

Смежные вопросы