Ошибка "Laravel requires the Mcrypt PHP extension" при установке Laravel 4
Почему возникает ошибка Mcrypt?
Ошибка "Laravel requires the Mcrypt PHP extension" возникает, потому что Laravel 4 использует библиотеку Mcrypt для шифрования данных (сессии, куки, шифрование паролей и т.д.). Без этого расширения фреймворк не может работать. Проблема в том, что Mcrypt — это устаревшее расширение, которое было удалено из PHP 7.2+, но Laravel 4 был создан для более старых версий PHP.
Решение для Windows (OpenServer / XAMPP / WAMP)
Вот пошаговая инструкция для локального сервера на Windows:
- Проверьте версию PHP — Laravel 4 требует PHP 5.4–5.6. Откройте phpinfo() и посмотрите версию. Если у вас PHP 7+, Laravel 4 несовместим — нужно либо перейти на Laravel 5+, либо понизить PHP.
- Найдите правильный файл php_mcrypt.dll — в OpenServer зайдите в папку
modules\php\PHP-5.6\extи убедитесь, что там естьphp_mcrypt.dll. Если нет — скачайте его для вашей версии PHP с официального репозитория PECL. - Раскомментируйте строку в php.ini — откройте
php.ini(для OpenServer он находится вuserdata\config\php-5.6.ini). Найдите строку;extension=php_mcrypt.dllи удалите точку с запятой. Важно: не ставьте пробелы перед строкой! - Проверьте путь к расширениям — в php.ini должна быть строка
extension_dir = "ext"или полный путь до папки ext. Если её нет — добавьте. - Перезапустите сервер — после изменений обязательно перезапустите OpenServer полностью (не просто "перечитать конфиги", а выключить и включить).
- Проверьте phpinfo() — создайте файл
info.phpс кодом<?php phpinfo(); ?>и откройте в браузере. Найдите секцию "mcrypt" — если она появилась, расширение работает.
Пример правильной настройки php.ini:
extension_dir = "ext"
extension=php_mcrypt.dll
extension=php_mysqli.dll
extension=php_gd2.dll
Если mcrypt.dll не загружается — проверьте:
- Разрядность PHP (x86 или x64) — dll должна совпадать.
- Наличие Visual C++ Redistributable (часто требуется для расширений).
- Файл
libmcrypt.dllв папке с PHP или в system32 — иногда требуется дополнительная библиотека.
Альтернатива — Composer с флагом --ignore-platform-reqs
Если у вас PHP 7+ и вы не хотите переустанавливать PHP, можно попробовать установить Laravel 4 с игнорированием требований к расширениям:
composer create-project laravel/laravel myproject --prefer-dist --ignore-platform-reqs
Но это временное решение — при запуске приложения могут возникнуть ошибки из-за отсутствия Mcrypt.
Лучшее решение — перейти на Laravel 5+
Laravel 4 давно не поддерживается. Рекомендую установить Laravel 5.5 или 5.8 (они ещё работают на PHP 7.x) или Laravel 8+ (требует PHP 7.4+). Пример установки Laravel 8:
composer create-project laravel/laravel myproject --prefer-dist
Современные версии Laravel используют OpenSSL вместо Mcrypt, поэтому эта ошибка не возникнет.
<<Решение для Linux (Ubuntu/Debian)
Если вы работаете на Linux, проблема решается установкой пакета через менеджер пакетов:
sudo apt-get update
sudo apt-get install php5-mcrypt # Для PHP 5
sudo apt-get install php7.0-mcrypt # Для PHP 7.0
sudo phpenmod mcrypt
sudo service apache2 restart
Для PHP 7.1+ Mcrypt удалён из официальных репозиториев. В этом случае можно установить его через PECL:
sudo pecl install mcrypt-1.0.1
echo "extension=mcrypt.so" | sudo tee /etc/php/7.1/mods-available/mcrypt.ini
sudo phpenmod mcrypt
sudo service apache2 restart
Важно!
Mcrypt считается устаревшим и небезопасным. Даже если вы заставите Laravel 4 работать, настоятельно рекомендую:
- Перейти на Laravel 5+ (использует OpenSSL).
- Обновить PHP до 7.x или 8.x.
- В крайнем случае — использовать
--ignore-platform-reqsи написать свой класс шифрования на OpenSSL, подменив им Mcrypt через Service Provider.
Ответов пока нет.
Войдите чтобы оставить ответ
Блоги