После очередного обновления phpMyAdmin стал показывать сообщение:
$Cfg['TempDir'] (./tmp/) недоступен. Из-за этого phpMyAdmin не может кэшировать шаблоны и будет медленным.
В английском варианте:
The $cfg['TempDir'] (./tmp/) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this.
Это не ошибка, а предупреждение, поскольку phpMyAdmin продолжает работать.
Алгоритм решения довольно очевиден:
- создать требуемую папку
- прописать путь до этой папки в конфигурационном файле
На самом деле, важно сделать эти простые действия правильно — у созданной папки разрешения должны быть настроены таким образом, чтобы веб-сервер имел права на запись в неё. Для безопасности желательно делать эту папку не общедоступной для записи, то есть созданная директория должна принадлежать веб-серверу.
На самом деле, в любой системе Linux уже имеется папка, в которую предоставлены права на запись для кого угодно. Это папка /tmp. После каждой перезагрузки эта папка очищается.
То есть если в конфигурационный файл phpMyAdmin добавить настройку:
$cfg['TempDir'] = '/tmp';
То для phpMyAdmin этого будет достаточно — указанное предупреждение больше не появится.
Я не знаю, стоит ли остановиться на таком варианте, либо создать отдельную папку — выбор за вами.
Если вы решили создать отдельную папку, то начните с выбора места под неё. Важное замечание при выборе папки — если в файле /etc/php/php.ini установлено значение директивы open_basedir, то выбранная папка обязательно должна находиться внутри одной из этих директив. Например:
open_basedir = /srv/http/:/etc/webapps/:/usr/share/webapps/:/tmp/
Значит я могу создать нужную папку в /srv/http/, или в /etc/webapps/, или в /usr/share/webapps/, или в /tmp/. Иначе из-за настроек PHP phpMyAdmin не сможет иметь доступ в эту папку даже если для неё будут установлены полные права на запись для кого угодно.
Я создам папку под временные файлы phpMyAdmin в каталоге с самой установленной программой /usr/share/webapps/phpMyAdmin/:
sudo mkdir -p /usr/share/webapps/phpMyAdmin/tmp/
Теперь нужно установить правильные права (владелец имеет полный доступ к этой папке, а другие пользователи не имеют никаких разрешений), а также сделать владельцем этой директории веб-сервер.
В Debian, Ubuntu, Linux Mint, Kali Linux и их производных пользователь веб-сервера называется www-data, поэтому команды следующие:
sudo chown www-data:www-data /usr/share/webapps/phpMyAdmin/tmp/ sudo chmod 700 /usr/share/webapps/phpMyAdmin/tmp/
В Arch Linux и производных пользователь веб-сервера называется http, поэтому команды следующие:
sudo chown http:http /usr/share/webapps/phpMyAdmin/tmp/ sudo chmod 700 /usr/share/webapps/phpMyAdmin/tmp/
Проверим:
sudo ls -dl /usr/share/webapps/phpMyAdmin/tmp/ drwx------ 3 http http 4096 мая 27 16:39 /usr/share/webapps/phpMyAdmin/tmp/
Теперь откройте файл config.inc.php, он может быть расположен по пути /etc/webapps/phpmyadmin/config.inc.php, /usr/share/webapps/phpMyAdmin/config.inc.php или в каком-то другом месте.
sudo gedit /etc/webapps/phpmyadmin/config.inc.php
Добавьте туда настройку с указанием пути до папки временных файлов:
$cfg['TempDir'] = '/usr/share/webapps/phpMyAdmin/tmp/';
Сохраните и закройте файл. Сразу после этого сообщение о недоступности временной папки исчезнет.
Связанные статьи:
- Ошибка «Warning: Unknown: open_basedir restriction in effect.» (РЕШЕНО) (96.3%)
- Ошибка phpMyAdmin «Incorrect format parameter» при импорте базы данных (58.5%)
- Как установить веб-сервер Apache с PHP 7, MariaDB/MySQL и phpMyAdmin (LAMP) на Ubuntu (57.6%)
- Как установить веб-сервер (Apache, PHP, MySQL, phpMyAdmin) на Linux Mint, Ubuntu и Debian (57.6%)
- Переход с устаревшего расширения mcrypt на openssl_encrypt (54.8%)
- Ошибка «PHP Fatal error: Uncaught mysqli_sql_exception: No database selected» (РЕШЕНО) (RANDOM - 1%)