Как исправить ошибки в phpmyadmin

php-code-logo2.jpg phpMyAdmin: HTTP 403 (Forbidden); В конфигурационном файле необходимо задать парольную фразу (blowfish_secret); The configuration file now needs a secret passphrase (blowfish_secret).

Разбор всевозможных ошибок РНР и способов их решения.

  1. phpMyAdmin HTTP 403 (Forbidden)
  2. phpMyAdmin blowfish_secret
    1. 1. Отсутствует config.inc.php
    2. 2. А дальше mod_security не пускает
    3. 3. config.inc.php не в том месте
    4. 4. open_basedir restrictions
    5. 5. Протереть монитор, выдавить стекло

phpMyAdmin HTTP 403 (Forbidden)

Читаем журнал сервера:

script does not have ExecCGI enabled

$ sudo less /home/www/.logs/www-error.log|grep phpmyad|less
[Fri Aug 05 04:50:40.166650 2022] [fcgid:error] [pid 29625:tid 140391388202752]
[client 186.134.15.29:59762] mod_fcgid: location of script /usr/share/phpmyadmin
/index.php does not have ExecCGI enabled

Добавляем недостающее ExecCGI

$ sudo vi /etc/phpmyadmin/apache.conf
# phpMyAdmin default Apache configuration
 
Alias /phpmyadmin /usr/share/phpmyadmin
 
<Directory /usr/share/phpmyadmin>
    Options +FollowSymLinks +ExecCGI
    DirectoryIndex index.php
 
    AuthUserFile "/var/www/.htpasswd"
    AuthName "Administrator only"
    AuthType Basic
    require valid-user
    Satisfy all
 
    ...
</Directory>

ещё одной из причин может оказаться mod_security, как оно выключается будет далее…

phpMyAdmin blowfish_secret

В конфигурационном файле необходимо задать парольную фразу (blowfish_secret).

The configuration file now needs a secret passphrase (blowfish_secret).

Весёлая история, особенно если phpMyAdmin устанавливался не вручную, а из пакетов…

Требования к blowfish_secret:

  1. определяется в config.inc.php корневой директории phpmyadmin;
  2. должно быть не менее 32 символов

1. Отсутствует config.inc.php

По-умолчанию файл конфигурации /usr/share/phpmyadmin/config.inc.php в корневой директории phpmyadmin отсутствует — тут всё понятно, скопировали:

$ sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Отредактировали:

$ sudo vi /usr/share/phpmyadmin/config.inc.php
 
/**
 * This is needed for cookie based authentication to encrypt password in
 * cookie. Needs to be 32 chars long.
 */
$cfg['blowfish_secret'] = 'viyie0quoo1oobie5ai4othohQui6zeo'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Не помогло? Поехали дальше…

2. А дальше mod_security не пускает

Отключаем

$ sudo vi /etc/phpmyadmin/apache.conf
 
<Directory /usr/share/phpmyadmin>
    ...
    <IfModule security2_module>
        SecRuleEngine Off
        SecRuleRemoveById 920350 980130 949110 942140 200004
    </IfModule>
</Directory>

Опять не помогло? От phpMyAdmin-а маму…

3. config.inc.php не в том месте

Так тоже бывает, ой как бывает…

$ sudo vi /usr/share/phpmyadmin/libraries/vendor_config.php
 
/**
 * Directory where configuration files are stored.
 * It is not used directly in code, just a convenient
 * define used further in this file.
 */
define('CONFIG_DIR', '/etc/phpmyadmin/');
 
/**
 * Filename of a configuration file.
 */
define('CONFIG_FILE', CONFIG_DIR . 'config.inc.php');

Оказывается config.inc.php ожидается в /etc/phpmyadmin/ — передвигаем

$ sudo mv /usr/share/phpmyadmin/config.inc.php /etc/phpmyadmin/

Проверяем, ну, как? Снова не? От йоханый phpMyAdmin, разорви его ракета…

4. open_basedir restrictions

$ sudo less /home/www/.logs/www-access.log|grep access|less
...
[05-Aug-2022 06:24:53 Europe/Helsinki] phpmyadmin: Failed to load /var/lib/phpmyadmin/blowfish_secret.inc.php Check group www-data has read access and open_basedir restrictions.
[05-Aug-2022 06:24:53 Europe/Helsinki] phpmyadmin: Failed to load /var/lib/phpmyadmin/config.inc.php Check group www-data has read access and open_basedir restrictions.
[05-Aug-2022 06:24:53 Europe/Helsinki] phpmyadmin: Failed to load /etc/phpmyadmin/config-db.php Check group www-data has read access and open_basedir restrictions.

Думаю понятно, что нужно делать? php.ini у каждого хоста своё, находим там open_basedir и добавляем туда /var/lib/phpmyadmin/ и /etc/phpmyadmin/

; open_basedir, if set, limits all file operations to the defined directory
; and below.  This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file.
; http://php.net/open-basedir
;open_basedir =
open_basedir = /home/www:/usr/local/lib/php:/usr/lib/php:/usr/local/lib/php5:/usr/lib/php5:/proc:/usr/share:/var/lib:/etc/phpmyadmin:/usr/share/phpmyadmin

Ну, как, теперь арбайтен? НаАайн???

5. Протереть монитор, выдавить стекло

Ну.., тогда.., как нас уверят многие «копирасты», переменную $cfg[‘blowfish_secret’] указать именно в определённом порядке следования:

Если описанные выше способы не помогают, то точно выручит следующее:

Созданный ранее конфиг удаляем, чтобы не мешался и не влиял на работу того, что и без него работало:

# rm /usr/share/phpmyadmin/config.inc.php

Открываем реальный конфиг phpMyAdmin, который находится тут → /etc/phpmyadmin/config.inc.php и дописываем куда-нибудь в конец строку с переменной $cfg[‘blowfish_secret’], например, после этих двух строчек:

$cfg[‘UploadDir’] = »;
$cfg[‘SaveDir’] = »;
$cfg[‘blowfish_secret’] = ‘12345678901234567890123456789012’;

После этого ошибка в phpMyAdmin больше не появляется.

А чтобы 100%-я капитальная полная гарантия, вдобавок перезапустить браузер или перезагрузить весь ПК сразу — тогда уж точно всё вмиг засияет! :))

Примечание. Есть несколько причин, почему могут выскакивать подобного рода ошибки, если метод, описанный тут не помог, то следует поразмыслить над тем, что у нас установлен phpMyAdmin, который не предназначен для PHP 7 и следует ее удалить и переустановить для текущей версии языка PHP 7 или выше.

Часто бывает, что после установки на тот или иной сервер новой версии или при переходе на новую версию(к примеру, как у меня при переходе к php 7) phpMyAdmin начинает в панели выводить массу ошибка такого плана:

Deprecation Notice in ./../php/php-gettext/streams.php mysql

Backtrace

./../php/gettext/gettext.inc#41: require()
./libraries/select_lang.lib.php#477: require_once(./../php/gettext/gettext.inc)
./libraries/common.inc.php#563: require(./libraries/select_lang.lib.php)
./index.php#12: require_once(./libraries/common.inc.php)"

...

Не буду углубляться в дебри данной проблемы, часто бывает полезно забить и выключить эти предупреждения через конфигурацию php.ini. Для Vesta этот файл расположен в директории /etc/php/7.0/apache2/php.ini. Просто надо прописать в этот файл строчку для выключения предупреждений

error_reporting = ~E_DEPRECATED & E_ALL

Которая будет заставлять PHP забить на несоответствие разных версий языка PHP. После записи этой строчки необходимо перезагрузить сервер Apache командой в консоли, если у вас Ubuntu:

service apache2 restart

Далее, еще одна очень надоедливая проблема — это проблема с controluser и тоже очень часто встречается после установки Vesta.

Нам необходимо правильно установить имя пользователя и пароль для controluser’а. Они используются для соединения с хранилищем конфигурации phpMyAdmin (configuration storage), где хранятся настройки для дополнительных функций. Хранилище конфигурации не обязательно, phpMyAdmin может работать без него. Поэтому у нас есть два пути:

  1. Выключить хранилище конфигурации: $cfg['Servers'][$i]['pmadb'] = null; в config.inc.php;
  2. Настроить controluser‘а: создать пользователя в MySQL, предоставить ему определённый набор привилегий, затем добавить его имя и пароль в config.inc.php:
    $cfg['Servers'][$i]['controluser'] = '<ИМЯ_ПОЛЬЗОВАТЕЛЯ>'; 
    $cfg['Servers'][$i]['controlpass'] = '<ПАРОЛЬ>';

Для Ubuntu файл конфигурации на Vesta аходится по пути /etc/phpmyadmin/config.inc.php. Открываем данный файл и делаем один из вышеизложенных шагов. Я, к примеру, выключил данную функцию, так как она мне не нужна.

Сначала расскажу что я сделал, а потом к сути вопроса.

На голый сервер поставил VESTA, который собственно сам и накатил PHPMyAdmin, после авторизации на котором, возникали следующие ошибки и как я их решил:

  1. Ошибка при указании соединения для controluser в конфигурации:
    — Подсмотрел логин и пароль в файле /usr/local/vesta/conf/mysql.conf
    — Ввел их в /etc/phpmyadmin/config.inc.php ($cfg[‘Servers’][$i][‘controluser’] и $cfg[‘Servers’][$i][‘controlpass’])
  2. Дополнительные возможности phpMyAdmin не настроены в полной мере, некоторые функции были отключены.
    — Ввел все те же логин и пароль в /etc/phpmyadmin/config.inc.php ($cfg[‘Servers’][$i][‘controluser’] и $cfg[‘Servers’][$i][‘controlpass’])
    — Скачал пример бэкапа /usr/share/doc/phpmyadmin/examples/create_tables.sql.gz и импортировал его
    — В /etc/phpmyadmin/config.inc.php указал таблицы в соответствии с импортируемой бд (добавил знак подчеркивания: pma_bookmark => pma__bookmark и т.п.)

После проделанных шагов PMA прекрасно заработал и более не ругался, но ровно до того момента когда время авторизации истекло и меня не выбило. И теперь я не могу войти под любыми парами логин-пароль, в т.ч. root.

Отображаемые ошибки:
#2002 Невозможно подключиться к серверу MySQL
Ошибка при указании соединения для controluser в конфигурации.

I’m currently getting the following errors when using PHP via command line and on PHPMyAdmin.

Command line error

PHPMyAdmin error

What’s the easiest way to disable these errors? The command line errors don’t make sense because all them work correctly.

When I navigate to the directory where it’s saying it doesn’t exist, it’s .so version of them not .dll.

Tried disabling them in php.ini but didn’t do anything.

asked Oct 20, 2017 at 8:52

zcoyne's user avatar

4

The accepted solution is wrong. It will turn off all error reporting in PHP and that’s not intended?

The best way to turn off Phpmyadmin errors is to go go config.inc.php and set (or comment out ie removing the // lines in front of the value, which is set to «ask» by default.)

$cfg['SendErrorReports'] = 'never';

Hit save and that’s it.

More info
https://docs.phpmyadmin.net/en/latest/config.html#cfg_SendErrorReports

answered Oct 21, 2019 at 12:39

Rbbn's user avatar

RbbnRbbn

5976 silver badges13 bronze badges

From your command line screenshot it can be seen that you have unix path and windows .dll — it is a nonsense. You need to look at your php.ini and fix either extension_dir or extension entries.

For phpMyAdmin errors you need to edit error_reporting into your php.ini to e.g. E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

answered Oct 20, 2017 at 8:57

Flying's user avatar

FlyingFlying

4,4122 gold badges16 silver badges25 bronze badges

1

Некоторые типы ошибок в работе с базой данных MySQL при импорте или экспорте базы данных.

Ошибка 1

При экспорте MySQL через phpMyAdmin возникала ошибка, которая приводила к невозможности выполнить сохранение база данных. Причина была в испортившихся таблицах, из-за которой и возникала ошибка.

Ошибка была следующего вида:

Не удалось создать резервную копию базы данных. Процесс завершился с ошибкой: ‘mysqldump: Got error: 1146: Table ‘site.wp_subscribe_reloaded_subscribers’ doesn’t exist when using LOCK TABLES

Решение

Через SSH зайти на VDS.

Использовать команду:

mysqlcheck -u MySQL_name -p MySQL_user_name

Ввести пароль от базы данных.

У меня был выведен список всех таблиц, где несуществующая таблица была показана с ошибкой. В самой базе данных MySQL её не было, а phpMyAdmin на неё все равно ругался.

MySQL_name.wp_statpress                           OK
MySQL_name.wp_subscribe_reloaded_subscribers
Error    : Table ‘MySQL_name.wp_subscribe_reloaded_subscribers’ doesn’t exist
status   : Operation failed
MySQL_name.wp_term_relationships                  OK

Ввести команду (подтвердить паролем):

Появится такая строка:

Нужно выбрать базу данных:

Показать таблицы в ней (Точка с запятой обязательна!):

Будут показаны все таблицы.

После этого удалил таблицу:

drop table wp_subscribe_reloaded_subscribers;

Появилась ошибка:

ERROR 1051 (42S02): Unknown table ‘wp_subscribe_reloaded_subscribers’

но при этом она была удалена и больше нигде не отображалась, а экспорт заработал.

Ошибка 2

Сообщение об ошибки возникло на CentOS с ISPmanager.

При создании базы данных с именем, которое когда-то существовало, возникала ошибка:
«Имя базы уже существует»

Имя базы было в таблице db в системной базе MySQL. Удаление записи оттуда решило эту проблему.

Ошибка 3

При импорте базы данных возникала следующая ошибка:

#1064 — You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘…..sql’ at line 1

В архиве базы данных находилось несколько файлов. Надо было разархивировать архив и заархивировать только файл базы данных.

Ошибка 4

You probably tried to upload a file that is too large. Please refer to documentation for a workaround for this limit.

Решение приведено статье ошибка при импорте в phpMyAdmin.

Понравилась статья? Поделить с друзьями:
  • Как исправить ошибки в php
  • Как исправить ошибки в pes
  • Как исправить ошибки в pdf документе
  • Как исправить ошибки в mw3
  • Как исправить ошибки в memtest