Я думаю, что убил свой сервер LAMP!
Сервер - CentOS 6.6, на нем установлены Apache 2.2 и PHP 5.4. Первоначально я ничего не устанавливал - это было предоставлено моим хостинг-провайдером.
На сервере все работало нормально, пока я не попытался установить phpMyAdmin. Я выполнил следующие команды:
sudo rpm -ivh epel-release*
sudo yum install phpmyadmin
Затем я перезапустил Apache, но когда я попытался перейти к моему приложению PHP (которое работало нормально), я получил внутреннюю ошибку сервера 500. Я проверил журнал ошибок Apache и увидел следующее:
[Thu Nov 06 22:37:35 2014] [notice] Apache/2.2.27 (Unix) mod_ssl/2.2.27 OpenSSL/1.0.1e-fips mod_bwlimited/1.4 configured -- resuming normal operations
[Thu Nov 06 22:37:38 2014] [error] [client 124.170.80.18] PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mcrypt.so' - libmcrypt.so.4: cannot open shared object file: No such file or directory in Unknown on line 0
[Thu Nov 06 22:37:38 2014] [error] [client 124.170.80.18] Premature end of script headers: index.php
я проверил /etc/php.d/mcrypt.ini и в нем есть следующее:
; Enable mcrypt extension module
extension=mcrypt.so
Я думал, что это мог быть какой-то конфликт версий в том, что установленная версия PHP была 5.4, но phpMyAdmin ожидал версии 5.3.
#php -v
PHP 5.4.28 (cli) (built: May 7 2014 13:54:44)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
С тех пор я удалил phpMyAdmin и попытался переустановить PHP, но я думаю, что полностью испортил свой сервер!
Это (кхм) производственная среда, и теперь, похоже, ничего не работает.
Буду признателен за любую поддержку / совет.
Оказывается, phpMyAdmin уже установлен (и доступен через cPanel). Я попросил хостинг-провайдера исследовать проблему PHP, и они выполнили перестройку EasyApache через WHM, и это устранило проблемы.
Я согласен с утверждением Майкла Хэмптона о том, что вам не следует устанавливать phpMyAdmin на рабочий сервер.
Я предпочитаю устанавливать phpMyAdmin через git checkout, а не через их пакет. Это дает вам контроль над именем хоста, добавляя аутентификацию .htpasswd, ssl и т. Д. (Я уверен, что все это можно сделать с помощью пакета, но зачем делать это по-другому, если вы уже настраиваете сайты и уже есть способ сделать это?). Репо для phpMyAdmin можно найти по адресу https://github.com/phpmyadmin/phpmyadmin и может быть клонирован как сайт, что позволит вам обновлять так часто, как вам нравится, с помощью простого git pull
.
Лучше, чем phpMyAdmin, было бы установить что-то вроде MySQL Workbench (http://dev.mysql.com/downloads/workbench/) и настройте сервер для связи через порт 3306 только с вашим ip (через правила безопасности в AWS или iptables / firewall и т. д.).
Лучше даже, чем использовать MySQL Workbench, было бы ssh на сервере и запускать команды mysql через CLI. Локально, без внешней связи.
Теперь, когда я все это сказал, в вашем сообщении упоминается ошибка Unable to load dynamic library...
Это означает, что вам не хватает пакета. В вашем случае это файл mcrypt.
@note: все команды выполняются от имени пользователя root. Вы также можете выполнить sudo для каждой команды ниже.
Первый шаг - выяснить, какую версию php вы установили:
# yum list installed | grep php
Это должно дать вам такой ответ:
...
php55.x86_64 5.5.18-1.92.amzn1 @amzn-updates
...
В моем сценарии у меня установлен php55 (у вас может быть просто php.x86_64 или php54.x86_64). Теперь я знаю, что мне нужно найти mcrypt и установить его:
# yum search php55-mcrypt
дает:
php55-mcrypt.x86_64 : Standard PHP module provides mcrypt library support
Пакет найден! (Причина, по которой я ищу, иногда заключается в том, что имена пакетов не соответствуют вашим ожиданиям, поэтому вам может потребоваться поискать только mcrypt, например, и просмотреть результаты для того, который вы хотите.
Наконец, установите и перезапустите httpd:
# yum install php55-mcrypt
# service httpd restart
Если при попытке перезапустить httpd вы получаете аналогичную ошибку для другого пакета, промойте и повторите.