Как вручную обновить phpMyAdmin
Со времени выпуска Ubuntu 18.04 и других дистрибутивов Linux у многих людей возникли проблемы с совместимостью PHP 7.2 и phpMyAdmin 4.6. В посте мы разберем как решить эту проблему и что делать дальше
Когда у вас стоит phpMyAdmin и в репозитории не обновляют последнюю версию, а warning'ы типа
“Warning in ./libraries/sql.lib.php#613 count(): Parameter must be an array or an object that implements Countable”
уже начинают доставать, то тут либо заходить в каждый файл и заменять строчки кода;
count($analyzed_sql_results['select_expr'] == 1
на
((count($analyzed_sql_results['select_expr']) == 1)
либо же, что логичнее всего, обновить версию phpMyAdmin до последней версии, вручную.
Обновление phpMyAdmin до последней версии
1. Сделайте резервную копию
На всякий пожарный случай, можно сделать резервную копию текущей папки phpMyAdmin, переместив ее с добавлением к имени, что-нибудь типа bak:
sudo mv /usr/share/phpmyadmin/ /usr/share/phpmyadmin.bak
2. Загрузите и распакуйте phpMyAdmin
Зайдите в папку phpMyAdmin, скорее всего это будет:
cd /usr/share/phpmyadmin
Далее, зайдите на страницу загрузок phpMyadmin, скопируйте ссылку на последнюю версию, и загрузите zip архив с помощью wget:
sudo wget -P https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.zip
На сегодняшний день, последняя стабильная версия 4.9.2. Если теперь доступна более поздняя версия, не забудьте изменить версию в ссылке.
Далее распакуем архив с помощью unzip, если нет данной утилиты, то установите ее sudo apt-get install unzip:
sudo unzip phpMyAdmin-4.9.2-all-languages.zip
3. Скопируйте и удалите папку и архив
Для надежности используем команду cp (копировать), чтобы скопировать распакованную папку! Обратите внимание, что необходим -r аргумент, так как это папка:
sudo cp -r phpMyAdmin-4.9.2-all-languages phpmyadmin
Если все прошло успешно можно удалить ненужные папку и архивы:
sudo rm -rf phpMyAdmin-4.9.2-all-languages
sudo rm phpMyAdmin-4.9.2-all-languages.zip
sudo rm -rf phpmyadmin.bak
Теперь же зайдя по адресу /phpmyadmin мы уже можем увидеть обновленную версию PMA, но внизу будут предупреждения об отсутствии временной папки tmp и пустой парольной фразе blowfish_secret:
4. Отредактируйте конфигурационные файлы
Чтобы исправить данную проблему, можно пойти двумя путями:
Первый вариант - это замена в файле "/usr/share/phpmyadmin/libraries/vendor_config.php" параметры TEMP_DIR и CONFIG_DIR на значения ниже:
sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php
define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');
и
define('CONFIG_DIR', '/etc/phpmyadmin/');
phpMyAdmin теперь будет генерировать собственный blowfish_secret на основе каталога установки.
Второй вариант - создать временную папку в корне /usr/share/phpmyadmin, как ссылается параметр конфига TEMP_DIR и назначить ей владельца пользователя www-data:
cd /usr/share/phpmyadmin
sudo mkdir tmp
sudo chown -R www-data:www-data /usr/share/phpmyadmin/tmp
Предупреждение о папке tmp должно исчезнуть в phpMyAdmin.
Далее нужно скопировать сэмпл конфигурационного файла config.sample.inc.php в config.inc.php, найти параметр blowfish_secret и вставить вместо пустой строки свой хэш:
cd /usr/share/phpmyadmin
sudo cp config.sample.inc.php config.inc.php
sudo nano config.inc.php
Сгенерируйте произвольный хеш и вставьте в параметр конфига blowfish_secret:
/*
* This is needed for cookie based authentication to encrypt password in
* cookie
*/
$cfg['blowfish_secret'] = Fsdf34fSDFsegasg4ge4gw34Gg4g4$6%645gd';
/* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
сохраните файл. Предупреждение об blowfish_secret так же должно исчезнуть.
Второй вариант прост в использовании, но лучше все же изменять vendor_config, что даст некоторые преимущества в работе с phpMyadmin в будущем.
Скрипт PMA Updater
Чтобы процесс обновления проходил более удобнее и быстрее я написал bash скрипт, который доступен по адресу https://github.com/sinbadxiii/pma-updater , достаточно будет склонировать себе репозиторий и запустить скрипт обновления phpMyAdmin до последней версии командой:
sudo ./update.sh
Что думаешь?