ZaLinux.ru

$Cfg[‘TempDir’] (./tmp/) недоступен в phpMyAdmin (РЕШЕНО)

После очередного обновления 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/';

Сохраните и закройте файл. Сразу после этого сообщение о недоступности временной папки исчезнет.

Рекомендуемые статьи:

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *