Ошибка в phpMyAdmin после обновления до версии 4.8.0: $ cfg ['TempDir'] (./tmp/) недоступен

phpMyAdmin отлично работал с v4.7.9. Теперь, после обновления до v4.8.0 сегодня (замена старой папки phpmyadmin на новую) я получаю это сообщение в phpMyAdmin:

The $cfg['TempDir'] (./tmp/) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this.

Я добавил папку ./tmp/ вот так: /usr/share/tmp

phpMyAdmin включен: /usr/share/phpmyadmin

Это ничего не изменило.

Кто знает эту ошибку? Что я могу делать?

запустите установку композитора внутри только что помещенной папки phpmyadmin

Praneeth Nidarshan 09.04.2018 11:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
69
1
103 470
20
Перейти к ответу Данный вопрос помечен как решенный

Ответы 20

Ответ принят как подходящий

Решением было создать папку с именем tmp, например, /usr/share/phpmyadmin/tmp.

Также убедитесь, что у пользователя (или группы), запускающего веб-сервер (например, Apache), есть доступ для записи во вновь созданную папку tmp. Следовательно, измените владельца на этого пользователя или добавьте права записи для всех пользователей. Последнее может быть не совсем целесообразным.

Кажется, это не работает на экземпляре Amazon EC2 под управлением AMI Linux с установленным вручную phpMyAdmin. Я попытался передать всю папку /usr/share/phpmyadmin, подпапки и файлы chown и setfacl группе apache и даже chmod 777 группе /usr/share/phpmyadmin/tmp, но все равно получаю ошибку. Единственный способ заставить его работать - установить $cfg['TempDir'] = '/tmp'; в config.inc.php, но я не уверен, что это лучший способ справиться с этим.

Fabius 10.04.2018 12:51
i'm not sure if this is the best way to manage it; Я думаю, это не имеет значения. Это нормально.
David 11.04.2018 17:00

Не могу найти config.inc.php. Я вижу только его «образец».

Oki Erie Rinaldi 12.04.2018 04:56
config.inc.php должен находиться в папке phpMyAdmin. Может дело в /etc/phpmyadmin/config.inc.php?
David 12.04.2018 08:19
/var/www/pma# chown www-data tmp и любой chmod 7__ это сделали
Martin Schneider 13.04.2018 18:36

Выяснилось, что это из-за SELinux. Протестировал, дав команду chcon -R -t httpd_sys_rw_content_t /usr/share/phpmyadmin/tmp после chmod 777 /usr/share/phpmyadmin/tmp. На странице phpMyAdmin больше нет сообщений об ошибках. Итак, я сделал изменение постоянным с помощью semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpmyadmin/tmp(/.*)?" и перезагрузился. Убедитесь, что контексту были назначены надлежащие разрешения, проверив строку каталога tmp с помощью ls -Z /usr/share/phpmyadmin | grep tmp. Ошибка определенно исчезла.

Fabius 18.04.2018 18:00

Конфигурация по умолчанию - config.sample.inc.php, phpMyAdmin будет работать с этим из коробки. Скопируйте в config.inc.php, чтобы переопределить его.

Braconnot_P 29.12.2018 21:41

@Fabius, ваш комментарий о SElinux может быть добавлен в ответ. Это работает для меня. Спасибо.

Deividson Damasio 06.06.2019 03:51

В дополнение к комментарию @Fabius (который работает для меня) я понял, что эта проблема TempDir также вызвана символической ссылкой (в моем случае). Я создал символическую ссылку с phpmyadmin на текущую версию (phpMyAdmin4.xxx.xx). Это позволяет мне легко переключать версию, пока я тестирую установку. Если ваш виртуальный хост указывает на эту символическую ссылку, phpmyadmin не может найти ./tmp. Так что сделайте так, как предлагает Фабиус, добавьте переменную в config.inc.php, и все заработает, как ожидалось. Спасибо, Фабиус.

suther 25.06.2019 15:20

Centos8, после изменений semanage, не забудьте применить их: restorecon -Rv '/ usr / share / phpmyadmin / tmp'

KEMBL 21.06.2020 19:43

Создайте папку tmp в базовом каталоге установки phpMyAdmin (например, /usr/share/phpmyadmin/tmp) и убедитесь, что она доступна для записи пользователю, под которым работает PHP.

От Документация phpMyAdmin:

$cfg['TempDir']
    Type:   string
    Default value:  './tmp/'

Имя каталога, в котором могут храниться временные файлы. В настоящее время он используется для нескольких целей:

Кэш шаблонов, ускоряющий загрузку страницы. Импорт шейп-файлов ESRI, см. Раздел 6.30 Импорт: как импортировать шейп-файлы ESRI ?.

Чтобы обойти ограничения open_basedir для загруженных файлов, см. 1.11. Я получаю «ограничение open_basedir» при загрузке файла с вкладки импорта ..

Этот каталог должен иметь как можно более строгие разрешения, поскольку для доступа к этому каталогу требуется только тот пользователь, который запускает веб-сервер. Если у вас есть привилегии root, просто сделайте этого пользователя владельцем этого каталога и сделайте его доступным только для него:

chown www-data:www-data tmp
chmod 700 tmp

Если вы не можете изменить владельца каталога, вы можете выполнить аналогичную настройку с помощью ACL:

chmod 700 tmp
setfacl -m "g:www-data:rwx" tmp
setfacl -d -m "g:www-data:rwx" tmp

Если ни один из вышеперечисленных способов не работает для вас, вы все равно можете сделать каталог chmod 777, но это может создать риск для других пользователей при чтении и записи данных системой в этот каталог.

В моем случае я добавил

$cfg['TempDir'] = '/usr/share/phpmyadmin/temp';

к

config.inc.php File within the phpmyadmin folder

Надеюсь, это кому-то поможет

Не забудьте добавить необходимые разрешения, если это необходимо.

Ishimwe Aubain Consolateur 25.04.2018 11:58

/ usr / share / phpmyadmin / tmp (не temp), если вы не добавили папку таким образом

ssaltman 11.05.2018 01:57

папка была добавлена ​​именно так

Ishimwe Aubain Consolateur 12.05.2018 13:09

В моем случае [MacOs El Capitán / португальский] сообщение было:

The $cfg['TempDir'] (./temp/) is not accessible

Мое решение в xamppfiles / phpmyadmin / config.inc.php:

$cfg['TempDir'] = './temp/'; to $cfg['TempDir'] = '../temp/';

То есть я просто добавил точку к пути ... работает нормально.

У меня была такая же проблема в Ubuntu 18.04, когда я заменил версию phpMyAdmin из репозитория пакетов (v4.6.6) последней версией (4.8.0). Я не знаю, работаете ли вы на Ubuntu, но, возможно, мой ответ будет полезен вам (или другим), кто сталкивается с чем-то похожим.

Я поместил новую версию в стандартное расположение, /usr/share/phpmyadmin/, но при установке пакета Ubuntu PMA некоторые параметры конфигурации помещаются в другие места (см. /etc/phpmyadmin/ и /var/lib/phpmyadmin/). Я нашел эту настройку в /etc/phpmyadmin/apache.conf:

php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp

и, конечно же, этот каталог был создан и имел необходимые разрешения. Желая максимально приблизиться к параметрам установки пакета, я внес это изменение в /usr/share/phpmyadmin/libraries/vendor_config.php и указал прямо на эту папку:

//define('TEMP_DIR', './tmp/');
define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');

Этот параметр выбирается /usr/share/phpmyadmin/libraries/config.default.php (который вы не должны редактировать) для установки $cfg['TempDir'].

Подтверждение, что это сработало для меня также на Ubuntu 18.04 - обновление с 4.6.6 до 4.8.0

shanehoban 11.05.2018 18:47

ааааа. красивый. Работал как чемпион.

user5248 16.11.2019 06:30

Также измените define('CONFIG_DIR', ROOT_PATH); на define('CONFIG_DIR', '/etc/phpmyadmin/'); в файле vendor_config.php, чтобы избавиться от ошибки секретной парольной фразы (blowfish_secret).

William Ardila 11.06.2020 21:23

простое исправление - создать tmp dir в вашем phpmyadmin dir и установить разрешение на 777

mkdir tmp && chmod 777 tmp

тогда

обновите файл config.inc.php, добавьте эту строку

$cfg['TempDir'] = 'tmp';

Я сделал это, но добавил $cfg['TempDir'] = '/tmp'; в файл конфигурации.

skolind 14.06.2018 10:51

Согласно предложению @skolind, линия для меня была $cfg['TempDir'] = '/tmp';. Проблема решена. Спасибо!

TechnoCat 06.02.2020 02:40

В случае проблем с правами доступа к каталогам 777 предоставляет каждому пользователю полный доступ к каталогу. Все, что вам действительно нужно сделать, это chown -R user:user ~/phpMyAdmin, где user - это имя пользователя веб-сервера, обслуживающего PMA; то есть www-data / nginx / apache. Это разрешит любые конфликты прав собственности во всей установке, включая tmp, без предоставления разрешений всем.

Forever Cuber 09.04.2021 20:50

Я просто изменил свой файл vendor_config.php на define('TEMP_DIR', '/tmp/'); вместо define('TEMP_DIR', './tmp/');

Кажется, это работает.

Мой ответ адресован пользователям centos 7 Sentora, Папка tmp должна быть создана в phpMyadmin Sentora, как показано ниже.

cd /etc/sentora/panel/etc/apps/phpmyadmin/
sudo mkdir tmp

After creating the folder make sure you give Apache access permissions to the tmp folder

chown -R apache /etc/sentora/panel/etc/apps/phpmyadmin/tmp/

У меня была аналогичная проблема с каталогом «temp». Решением было изменить владельца и группу каталога «веточка» (внутри «temp») на «apache» (как владелец, так и группа).

Ты был прав. Я добавил это как запрос функции

Peter VARGA 22.08.2018 20:27

1) создайте папку tmp

mkdir /usr/share/phpmyadmin/tmp

2) найдите своего пользователя php

<?php echo `whoami`; ?>

3) Измените владельца папки tmp на пользователя php, найденного на шаге 2.

sudo chown -R step2phpuser:step2phpuser /usr/share/phpmyadmin/tmp

4) Выйдите из phpmyadmin и войдите снова

ну, в моем случае эта ошибка возникла, когда я использовал ubuntu 18.04. Все, что вам нужно, это перейти в каталог установки (в ubuntu - opt / lampp / phpmyadmin) и создайте папку tmp со всеми подходящими разрешениями на чтение / запись.

Выполните следующие действия в случае ubuntu-

1. перейдите в каталог установки PMA, набрав следующие команды в cmd-

cd opt/lampp/phpmyadmin

2.Затем введите следующую команду:

sudo mkdir tmp && chmod 777 tmp

и тогда все готово .. !! Я надеюсь, что это помогает..

просто зайдите в папку phpmyadmin и поместите этот код

$ cfg ['TempDir'] = './tmp/';

а затем проверьте, существует ли папка tmp в phpmyadmin, если она не существует, создайте папку tmp и дайте ей права на чтение и права.

Создайте временный каталог, принадлежащий пользователю веб-сервера и ограниченный им. Поместите нет в корневой каталог phpMyAdmin. (В этом примере веб-сервер работает как apache):

mkdir -p /var/tmp/phpMyAdmin
chown apache:apache /var/tmp/phpMyAdmin
chmod 700 /var/tmp/phpMyAdmin

Затем установите TempDir внутри config.inc.php phpMyAdmin:

$cfg['TempDir'] = '/var/tmp/phpMyAdmin';

Любой ответ, предполагающий, что вы создаете /usr/share/phpmyadmin/tmp, пропагандирует плохую практику безопасности. Обычно это верно для временных каталогов и явно указано в официальной документации phpMyAdmin:

For security reasons, all directories should be outside the tree published by webserver.

У меня было такое же сообщение об ошибке. Я использую Ubuntu16.04 с lampp. Вам следует перейти в каталог «phpmyadmin», в моем случае «/ opt / lampp / phpmyadmin /», создать новую папку «tmp». Откройте окно терминала и:

cd YOUR_PATH_TO_PHPMYADMIN
sudo mkdir tmp

Теперь вам нужно изменить группу папки tmp, чтобы предоставить доступ пользователю php. Чтобы найти его, вы можете создать php-файл в каталоге localhost, в моем случае это htdocs.

sudo touch user.php
sudo nano user.php

Внутри редактора nano введите:

<?php echo `whoami`; ?>

Затем нажмите CTRL + O и CTRL + X, чтобы сохранить и выйти. Откройте браузер и введите адресную строку

localhost/user.php

Он показывает вашего пользователя php.

После этого перейдите в терминал и перейдите в недавно созданный каталог tmp внутри каталога phpmyadmin и введите:

sudo chgrp YOUR_PHP_USER tmp -R

И измените разрешение на каталог tmp:

sudo chmod 775 tmp -R

Я рекомендую никогда не давать разрешение 777 любому файлу.

Я надеюсь, что это помогает!

Создайте папку tmp в корне файлов phpmyadmin

В дополнение к этому вам также необходимо предоставить все разрешения для этой папки. Это то, что я сделал в Windows.

Для пользователей Arch и Manjaro:

Создайте папку tmp на /etc/webapps/phpmyadmin/ - mkdir /etc/webapps/phpmyadmin/tmp

Установить разрешение на 777 - chmod 777 /etc/webapps/phpmyadmin/tmp

Добавьте эту строку в файл конфигурации на /etc/webapps/phpmyadmin/config.inc.php - $cfg['TempDir'] = '/tmp';

Ваше здоровье :)

Для меня каталог phpmyadmin был найден внутри /opt/lampp/

  1. открытый терминал внутри /opt/lampp/phpmyadmin/
  2. предоставьте терминалу права доступа root, набрав команду sudo su.
  3. теперь в том же терминале (mkdir -p /tmp/) нажмите Enter
  4. сейчас, chmod 777 /tmp
  5. Внутри каталога phpmyadmin находится файл config.inc.php. Откройте его с помощью того же терминала.
  6. добавьте эту строчку $cfg['TempDir'] = /tmp; и сохраните.
  7. Теперь все готово, просто перезагрузите вкладку, и ошибка исчезнет.

Это небезопасно, поскольку вы даете другим пользователям возможность читать файлы tmp. Это может привести к краже данных.

Kevin C 10.12.2020 11:58

У меня была такая же проблема, но ни один из приведенных выше ответов не смог решить. В моем случае мои настройки безопасности php были настолько строгими, что защищали php для доступа к каталогам, выходящим за рамки, определенные в open_basedir, расположенные на моем /etc/php.d/99-security.ini (который я добавил ранее из общего списка безопасности, и в вашем случае настройки также могут быть расположены в файле /etc/php.ini):

;; Limit PHP Access To File System
; Limits the PHP process from accessing files outside
; of specifically designated directories such as /var/www/html/
open_basedir = "/home/:/etc/phpMyAdmin/:/var/lib/phpMyAdmin/"

изменить на:

open_basedir = "/home/:/etc/phpMyAdmin/:/var/lib/phpMyAdmin/:'/usr/share/phpmyadmin/tmp/"  ;<== changing to this solved the prblem

вам просто нужно добавить свой собственный каталог в сообщение об ошибке ('/ usr / share / phpmyadmin / tmp /') и конец опции open_basedir. Не забудьте поставить разделитель : перед его добавлением.

Если папка уже существует, например, из предыдущей установки:

chmod -R 777 PATH_TO_FOLDER

Поэтому разрешения на подкаталоги также изменяются (рекурсивно).

Другие вопросы по теме