Назад | Перейти на главную страницу

PHP больше не работает на Centos после установки phpMyAdmin

Я думаю, что убил свой сервер 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, и это устранило проблемы.

  1. Я согласен с утверждением Майкла Хэмптона о том, что вам не следует устанавливать phpMyAdmin на рабочий сервер.

  2. Я предпочитаю устанавливать phpMyAdmin через git checkout, а не через их пакет. Это дает вам контроль над именем хоста, добавляя аутентификацию .htpasswd, ssl и т. Д. (Я уверен, что все это можно сделать с помощью пакета, но зачем делать это по-другому, если вы уже настраиваете сайты и уже есть способ сделать это?). Репо для phpMyAdmin можно найти по адресу https://github.com/phpmyadmin/phpmyadmin и может быть клонирован как сайт, что позволит вам обновлять так часто, как вам нравится, с помощью простого git pull.

  3. Лучше, чем phpMyAdmin, было бы установить что-то вроде MySQL Workbench (http://dev.mysql.com/downloads/workbench/) и настройте сервер для связи через порт 3306 только с вашим ip (через правила безопасности в AWS или iptables / firewall и т. д.).

  4. Лучше даже, чем использовать 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 вы получаете аналогичную ошибку для другого пакета, промойте и повторите.