更新到v4.8.0后phpMyAdmin出错:$ cfg [' TempDir'](。/ tmp /)无法访问

时间:2018-04-09 09:51:45

标签: php mysql linux phpmyadmin

phpMyAdmin在v4.7.9中运行良好。现在在今天更新到v4.8.0之后(将新的phpmyadmin文件夹替换为新文件夹)我在phpMyAdmin中收到此消息:

  

$ cfg [' TempDir'](。/ tmp /)无法访问。 phpMyAdmin无法使用   缓存模板,因此会很慢。

我添加了文件夹./tmp/,如下所示:/usr/share/tmp

phpMyAdmin已开启:/usr/share/phpmyadmin

这并没有改变任何事情。

谁知道这个错误?我该怎么办?

20 个答案:

答案 0 :(得分:41)

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

还要确保运行Web服务器的用户(或组)(例如Apache)具有对新创建的tmp文件夹的写访问权。因此,将所有权更改为该用户或为所有用户添加写访问权限。后者可能不太合适。

答案 1 :(得分:12)

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

mkdir tmp && chmod 777 tmp

然后

更新你的config.inc.php文件添加该行

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

答案 2 :(得分:11)

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

答案 3 :(得分:10)

在我的情况下,我添加了

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

  

的config.inc.php   phpmyadmin文件夹中的文件

希望它会帮助某人

答案 4 :(得分:5)

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

答案 5 :(得分:2)

来自phpMyAdmin documentation:

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

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

模板缓存可加快页面加载速度。         ESRI Shapefiles导入,请参见6.30导入:如何导入ESRI Shapefile?。

要解决open_basedir对上传文件的限制,请参阅1.11从导入选项卡上传文件时我收到'open_basedir restriction'。

此目录应具有尽可能严格的权限,因为访问此目录所需的唯一用户是运行Web服务器的用户。如果您具有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,但它可能会给其他用户带来系统读取和写入此目录中数据的风险。

答案 6 :(得分:2)

创建一个临时目录,该目录归Web服务器用户所有且仅限于此。 不要将其放置在phpMyAdmin Webroot内。 (在此示例中,网络服务器以apache的身份运行):

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

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

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

任何建议您创建/usr/share/phpmyadmin/tmp的答案都在倡导不良的安全做法。临时目录通常是这样,并明确声明了in the official phpMyAdmin documentation

  

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

答案 7 :(得分:2)

好吧,在我的情况下,当我使用ubuntu 18.04时发生了此错误。 您所需要做的只是进入安装目录(在ubuntu中-opt / lampp / phpmyadmin) 并创建一个具有所有合适的读/写权限的tmp文件夹。

在使用ubuntu时,请遵循以下步骤-

通过在cmd-中键入以下命令

1.go到PMA安装目录

  

cd opt / lampp / phpmyadmin

2。然后键入以下命令-

  

sudo mkdir tmp && chmod 777 tmp

然后您就完成了.. !! 希望对您有所帮助。

答案 8 :(得分:1)

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并重新登录

答案 9 :(得分:1)

我遇到了同样的问题,但是以上答案都无法解决。 在我的情况下,我的php安全设置是如此严格,以保护php不能访问位于我的open_basedir的{​​{1}}中定义的范围之外的目录(我是从安全摘要中永久添加的,而且这些设置也可以位于/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/"

您只需要在错误消息('/ usr / share / phpmyadmin / tmp /')和open_basedir="/home/:/etc/phpMyAdmin/:/var/lib/phpMyAdmin/:'/usr/share/phpmyadmin/tmp/" ;<== changing to this solved the prblem 选项的末尾添加您自己的目录。不要忘记在添加分隔符open_basedir之前将其放置。

答案 10 :(得分:1)

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

除此之外,您还需要提供对该文件夹的所有权限。这就是我在Windows中所做的。

答案 11 :(得分:1)

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

答案 12 :(得分:1)

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

这似乎有效。

答案 13 :(得分:1)

在我的案例中[MacOsElCapitán/ portuguese],消息是:

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

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

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

也就是说,我只是在路径上添加了一点...工作没问题。

答案 14 :(得分:0)

只需转到phpmyadmin文件夹并输入以下代码

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

然后检查tmp文件夹是否存在到phpmyadmin中(如果不存在),然后创建tmp文件夹并对其授予读取和正确权限。

答案 15 :(得分:0)

“我的答案”送给centos 7 Sentora用户, tmp 文件夹必须在Sentora的phpMyadmin下创建,如下所示

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

  

创建文件夹后,请确保您授予Apache对tmp文件夹的访问权限

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

答案 16 :(得分:0)

我有同样的错误信息。我在使用Lampp的Ubuntu16.04。您应该转到“ phpmyadmin”目录,在我的情况下为“ / opt / lampp / phpmyadmin /”,创建一个新的“ tmp”文件夹。打开一个终端窗口,然后:

cd YOUR_PATH_TO_PHPMYADMIN
sudo mkdir tmp

现在,您必须更改“ tmp”文件夹的组,才能访问php用户。为了找到它,您可以在本地主机目录中创建一个php文件,在我的情况下为“ htdocs”

sudo touch user.php
sudo nano user.php

在纳米编辑器中,键入:

<?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权限。

希望对您有帮助!

答案 17 :(得分:0)

对于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';

的配置文件中

干杯:)

答案 18 :(得分:0)

如果文件夹已经存在,例如从以前的安装:

chmod -R 777 PATH_TO_FOLDER

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

答案 19 :(得分:-2)

对我来说,在/opt/lampp/中发现了phpmyadmin目录

  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. 现在您可以使用了,只需重新加载选项卡,错误就会消失。