Phpmyadmin et open_basedir sur Debian Sid
By Pierre-Alain B on Thursday, September 22 2016, 06:28 - Permalink
Stupéfaction hier quand, sur Debian Sid, phpmyadmin cessa de fonctionner... Sans doute une mise à jour récente avait-elle cassé le subtile équilibre propice à phpmyadmin.
L'examen de logs (dans /var/logs/apache2/error.log) montre que :
[Tue Sep 20 07:17:39.550343 2016] [:error] [pid 4509] [client ::1:57788] PHP Fatal error: require_once(): Failed opening required '/usr/share/php/php-gettext/gettext.inc' (include_path='.') in /usr/share/phpmyadmin/libraries/common.inc.php on line 77 [Tue Sep 20 07:17:40.162663 2016] [:error] [pid 4505] [client ::1:57790] PHP Warning: require_once(): open_basedir restriction in effect. File(/usr/share/php/php-php-gettext/gettext.inc) is not within the allowed path(s): (/usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/)
La seconde ligne (Warning PHP) est assez explicite sur l'erreur. Il semble donc nécessaire d'ajouter le chemin vers /usr/share/php/php-gettext/ dans l'instruction open_basedir.
Pour ce faire, ouvrir le fichier de configuration de l'hôte phpmyadmin en écriture :
nano /etc/apache2/conf-available/phpmyadmin.conf
et repérer la ligne "open_basedir" qui doit ressembler à
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
Il faut alors la transformer par un ajout judicieux en :
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/:/usr/share/php/php-gettext/
Et, après un redémarrage d'Apache, tout fonctionne à nouveau.