Я пытаюсь настроить новую среду разработки, соответствующую производственной системе с PHP 5.4 на RHEL 6.5. Поскольку PHP 5.4 является EOL и я не мог понять, какая магическая комбинация репозиториев необходима для установки PHP 5.4 на моем новом сервере разработки RHEL, я решил перейти на PHP 5.6 на сервере разработки. Мне удалось установить 5.6 и добавить свой проект Laravel 4.1, но когда я загрузил его в свой браузер, я получил следующее: Mcrypt PHP extension required.
Я подтвердил, что php56u-mcrypt-5.6.14-1.ius.el6.x86_64
пакет установлен; Я подтвердил, что /etc/php.d/20-mcrypt.ini
загружает расширение; Я подтвердил, что php -m | grep mcrypt
показывает, что модуль загружен; Я подтвердил, что php -i | grep mcrypt
показывает, что /etc/php.d/20-mcrypt.ini
на самом деле загружается и что mcrypt support
регистрируется как enabled
; Я перезапускал apache больше раз, чем могу вспомнить; и я даже подтвердил, что /usr/lib64/php/modules/mcrypt.so
существуют. Странно то, что я НЕ получаю это сообщение при попытке запустить команды композитора, что, кажется, является обычным явлением в других местах.
В этом случае у меня есть вроде бы рабочая установка mcrypt в командной строке, но не через Apache, что говорит о том, что проблема существует, а не в моей установке mcrypt как таковой. Но файл конфигурации apache, который я использую на своем новом тестовом сервере, ничем не отличается от того, который используется на моем производственном сервере (спасибо, Puppet!), И у меня никогда не было этой проблемы на производственном сервере. Я в тупике. Какие-либо предложения?
Цифры я найду ответ, поспав на нем. Как оказалось, у меня были две разные версии PHP, хотя я установил только одну. Я обнаружил это, создав страницу, чтобы показать phpinfo()
в браузере и сравнивая с выводом консоли для php -v
: браузер показал PHP 5.4.x, а CLI - 5.6.x. Моя конфигурация марионетки была немного другой (из-за установки другой версии PHP), и я не установил libphp5.so
и libphp5-zts.so
модули правильно (они были скопированы из более старой установки). Итак, Apache использовал эти модули, а затем жаловался, что mcrypt для php 5.4 не был установлен, и это правильно. Но поскольку версия CLI была 5,6, и mcrypt был установлен правильно, программы CLI, такие как artisan, работали нормально. В моем случае решение заключалось в том, чтобы запустить yum reinstall php56u
чтобы установить эти модули с правильными версиями. Как только я это сделал, apache и CLI оказались на одной странице, и мое приложение начало работать.