phpMyAdmin: HTTP 403 (Forbidden); В конфигурационном файле необходимо задать парольную фразу (blowfish_secret); The configuration file now needs a secret passphrase (blowfish_secret).
Разбор всевозможных ошибок РНР и способов их решения.
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:
- определяется в config.inc.php корневой директории phpmyadmin;
- должно быть не менее 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%-я капитальная полная гарантия, вдобавок перезапустить браузер или перезагрузить весь ПК сразу - тогда уж точно всё вмиг засияет! :))