更新到 v4.8.0后 phpMyAdmin 中的错误: 无法访问 $cfg [‘ TempDir’](./tmp/)

phpMyAdmin在4.7.9版本中运行良好。现在,在今天升级到 v4.8.0之后(用新文件夹替换旧的 phpmyadmin文件夹) ,我在 phpMyAdmin 中收到了这条消息:

无法访问 $cfg [‘ TempDir’](./tmp/) 缓存模板,因此速度会很慢。

我像这样添加了文件夹 ./tmp/: /usr/share/tmp

打开 phpMyAdmin: /usr/share/phpmyadmin

这改变不了什么。

谁知道这个错误? 我能做什么?

122801 次浏览

解决方案是创建一个名为 tmp的文件夹,如下所示: /usr/share/phpmyadmin/tmp

还要确保运行 webserver (例如 Apache)的用户(或组)对新创建的 tmp 文件夹具有写权限。因此,将所有权更改为该用户或为所有用户添加写访问权限。后者可能并不是真正可取的选择。

在 phpMyAdmin 安装的基本目录(例如 /usr/share/phpmyadmin/tmp)中创建一个 tmp文件夹,并确保运行 PHP 的用户可以写入该文件夹。

来自 PhpMyAdmin 文档:

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

可以存储临时文件的目录的名称。 它目前有几种用途:

可以加速页面加载的模板缓存。 ESRI Shapefiles 导入,请参阅6.30导入: 如何导入 ESRI Shapefiles。

To work around limitations of open_basedir for uploaded files, see 1.11 I get an ‘open_basedir restriction’ while uploading a file from the import tab..

该目录应该具有尽可能严格的权限,因为访问该目录所需的唯一用户是运行 webserver 的用户。如果您拥有 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 Phpmyadmin 文件夹中的文件

希望能帮到别人

以我为例(MacOs El Capitán/wine) ,传递的信息是:

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

我的解决方案,在 xamppfiles/phpmyadmin/config.inc.php 中:

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

也就是说,我只是在路径上加了一点... 工作很好。

我在 Ubuntu 18.04上遇到过同样的问题,当时我用最新版本(4.8.0)替换了包存储库中的 phpMyAdmin 版本(v4.6.6)。我不知道你是否运行在 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']

简单的修复方法是在 phpmyadmin 目录中创建 tmp 目录,并将权限设置为777

mkdir tmp && chmod 777 tmp

那么

更新 config.inc.php 文件添加这一行

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

我只是将我的 vendor_config.php文件改为 define('TEMP_DIR', '/tmp/');而不是 define('TEMP_DIR', './tmp/');

这个好像有用。

我的答案是森托斯7森托拉用户, 必须在 Sentora 的 phpMyadmin 下创建 tmp 文件夹,如下所示

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

在创建文件夹之后,请确保为 tmp 文件夹提供 Apache 访问权限

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

我在“ temp”目录中遇到了类似的问题。解决方案是将“ twig”目录(在“ temp”内)的所有者和组更改为“ apache”(所有者和组)

1)创建 tmp 文件夹

mkdir /usr/share/phpmyadmin/tmp

2)找到你的 php 用户

<?php echo `whoami`; ?>

3)将 tmp 文件夹的所有权更改为在步骤2中找到的 php 用户

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

4)登出 phpmyadmin 并重新登录

在我的例子中,这个错误发生在我使用 ubuntu18.04的时候。 您所需要的只是转到安装目录(在 ubuntu-opt/lampp/phpmyadmin 中) 并创建具有所有适当读/写权限的文件夹 tmp。

如果遇到 ubuntu-,请遵循以下步骤

1. 在 cmd-中键入以下命令,转到 PMA 安装目录

Cd opt/lampp/phpmyadmin

然后键入以下命令-

Sudo mkdir tmp & & chmod 777 tmp

然后你就完了! 我希望这能有所帮助。

只需转到 phpmyadmin 文件夹并放置这段代码

$cfg [‘ TempDir’] =’./tmp/’;

然后检查 tmp 文件夹是否存在,如果不存在,则创建 tmp 文件夹并给予读取和正确的权限。

创建一个由 webserver 用户拥有且仅限于该用户的临时目录。执行 没有将其放在 phpMyAdmin webroot 中。(在这个例子中,webserver 作为 apache运行) :

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

接下来,在 phpMyAdmin 的 config.inc.php中设置 TempDir:

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

任何建议您创建 /usr/share/phpmyadmin/tmp的回答都是在提倡糟糕的安全实践。这对于临时目录通常是正确的,并且显式地声明了 在官方的 phpMyAdmin 文档中:

出于安全原因,所有目录都应该位于树的外部 由网络服务器发布。

我收到了同样的错误消息。我使用 Ubuntu16.04和灯。您应该转到‘ phpmyadmin’目录,在我的例子中是’/opt/lampp/phpmyadmin/’,创建一个新的‘ tmp’文件夹。打开终端机窗口:

cd YOUR_PATH_TO_PHPMYADMIN
sudo mkdir tmp

现在,您必须更改“ tmp”文件夹的组以允许 php 用户访问。为了找到它,您可以在 localhost 目录中创建一个 php 文件,在我的示例中是“ htdocs”

sudo touch user.php
sudo nano user.php

在 nano 编辑器中,输入:

<?php echo `whoami`; ?>

然后按 CTRL + O 和 CTRL + X 保存并退出。 打开浏览器,键入地址栏

localhost/user.php

它显示了您的 php 用户。

然后,转到终端,导航到最近在 phpmyadmin 目录中创建的“ tmp”目录,输入:

sudo chgrp YOUR_PHP_USER tmp -R

并将权限更改为“ tmp”目录:

sudo chmod 775 tmp -R

我建议永远不要给777对任何文件的权限。

希望能有所帮助!

在 phpmyadmin 文件的根目录中创建 tmp文件夹

除此之外,您还需要提供该文件夹的所有权限。

Arch 和 Manjaro 用户:

/etc/webapps/phpmyadmin/-mkdir /etc/webapps/phpmyadmin/tmp创建一个文件夹 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. 通过键入 sudo su命令将 root特权授予终端。
  3. 现在在同一个终端使用(mkdir -p /tmp/)点击进入
  4. 现在,chmod 777 /tmp
  5. phpmyadmin目录中有一个文件 config.inc.php。使用相同的终端打开它。
  6. 添加这一行 $cfg['TempDir'] = /tmp;和 Save。
  7. 现在可以开始了,只需重新加载选项卡,错误就会消失。

我也有同样的问题,但是上面的答案都不能解决。 在我的例子中,我的 php 安全设置是如此严格,以保护 php 访问位于我的 /etc/php.d/99-security.iniopen_basedir定义的范围之外的目录(我之前从一个安全教程中添加了这些设置,在你的例子中,这些设置也可以位于 /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

因此,对子目录的权限也会被修改(递归地)。