Avatar ·

Ошибка "Laravel requires the Mcrypt PHP extension" при установке Laravel 4

Всем привет! Я новичок в PHP и Laravel, пытаюсь установить Laravel 4 на свой локальный сервер (OpenServer на Windows). Делаю всё по инструкции: скачал Composer, установил, открываю консоль, пишу `composer create-project laravel/laravel myproject --prefer-dist`. Начинается загрузка, но потом процесс прерывается и вылетает ошибка: ``` Your requirements could not be resolved to an installable set of packages. Problem 1 - laravel/framework v4.2.17 requires ext-mcrypt * -> the requested PHP extension is missing from your system. - laravel/framework v4.2.16 requires ext-mcrypt * -> the requested PHP extension is missing from your system. - ... ``` Я проверил phpinfo() — там нет секции с mcrypt. В php.ini раскомментировал строку `extension=php_mcrypt.dll`, но ничего не изменилось. Перезагружал сервер, чистил кэш Composer командой `composer clear-cache`, но ошибка остаётся. Подскажите, пожалуйста, как правильно включить Mcrypt в PHP для Laravel 4? Может быть, нужно что-то ещё скачать или настроить? Буду благодарен за подробную инструкцию для новичка! Вот мой код php.ini (фрагмент): ``` ;extension=php_mcrypt.dll ;extension=php_mysqli.dll ``` Я раскомментировал первую строку, но всё равно не работает. Что я делаю не так? <<>>

Почему возникает ошибка Mcrypt?

Ошибка "Laravel requires the Mcrypt PHP extension" возникает, потому что Laravel 4 использует библиотеку Mcrypt для шифрования данных (сессии, куки, шифрование паролей и т.д.). Без этого расширения фреймворк не может работать. Проблема в том, что Mcrypt — это устаревшее расширение, которое было удалено из PHP 7.2+, но Laravel 4 был создан для более старых версий PHP.

Решение для Windows (OpenServer / XAMPP / WAMP)

Вот пошаговая инструкция для локального сервера на Windows:

  1. Проверьте версию PHP — Laravel 4 требует PHP 5.4–5.6. Откройте phpinfo() и посмотрите версию. Если у вас PHP 7+, Laravel 4 несовместим — нужно либо перейти на Laravel 5+, либо понизить PHP.
  2. Найдите правильный файл php_mcrypt.dll — в OpenServer зайдите в папку modules\php\PHP-5.6\ext и убедитесь, что там есть php_mcrypt.dll. Если нет — скачайте его для вашей версии PHP с официального репозитория PECL.
  3. Раскомментируйте строку в php.ini — откройте php.ini (для OpenServer он находится в userdata\config\php-5.6.ini). Найдите строку ;extension=php_mcrypt.dll и удалите точку с запятой. Важно: не ставьте пробелы перед строкой!
  4. Проверьте путь к расширениям — в php.ini должна быть строка extension_dir = "ext" или полный путь до папки ext. Если её нет — добавьте.
  5. Перезапустите сервер — после изменений обязательно перезапустите OpenServer полностью (не просто "перечитать конфиги", а выключить и включить).
  6. Проверьте 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.