Phpmyadmin 4.9.5 ->无法访问$cfg ['TempDir'](/var/lib/phpmyadmin/tmp/),即使它存在并且具有正确的权限

mhd8tkvw  于 2022-11-09  发布在  PHP
关注(0)|答案(4)|浏览(342)

你好,我在使用phpmyadmin时遇到了麻烦。它基本上是一个新安装的版本。我不知道为什么它不工作。我还没有修改任何文件。
登录时显示以下错误消息:

The configuration file now needs a secret passphrase (blowfish_secret).

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

stat /var/lib/phpmyadmin/tmp

File: /var/lib/phpmyadmin/tmp
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: 803h/2051d      Inode: 170769      Links: 3
Access: (0777/drwxrwxrwx)  Uid: (   33/www-data)   Gid: (   33/www-data)
Access: 2020-09-07 02:26:51.239765744 +0200
Modify: 2020-06-26 03:45:53.392552054 +0200
Change: 2020-09-07 02:34:01.222889412 +0200
 Birth: -

如上所述,我没有修改blowfish secret或任何其他文件ls /var/lib/phpmyadmin/

blowfish_secret.inc.php  tmp

配置文件看起来也是正确的。我甚至试着稍微改变一下路径,看看它是否有任何效果,是正确的配置文件。它显示了同样的错误,但使用了新的路径。
sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php

/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * File for vendor customisation, you can change here paths or some behaviour,
 * which vendors such as Linux distributions might want to change.
 *
 * For changing this file you should know what you are doing. For this reason
 * options here are not part of normal configuration.
 *
 * @package PhpMyAdmin
 */
if (! defined('PHPMYADMIN')) {
    exit;
}

/**
 * Path to vendor autoload file. Useful when you want to
 * have have vendor dependencies somewhere else.
 */
define('AUTOLOAD_FILE', './autoload.php');

/**
 * Directory where cache files are stored.
 */
define('TEMP_DIR', '/var/lib/phpmyadmin/tmp/');

/**
 * Path to changelog file, can be gzip compressed. Useful when you want to
 * have documentation somewhere else, eg. /usr/share/doc.
 */
define('CHANGELOG_FILE', '/usr/share/doc/phpmyadmin/changelog.gz');

/**
 * Path to license file. Useful when you want to have documentation somewhere
 * else, eg. /usr/share/doc.
 */
define('LICENSE_FILE', '/usr/share/doc/phpmyadmin/copyright');

/**
 * Directory where SQL scripts to create/upgrade configuration storage reside.
 */
define('SQL_DIR', './sql/');

/**
 * Directory where configuration files are stored.
 * It is not used directly in code, just a convenient
 * define used further in this file.
 */
define('CONFIG_DIR', '/etc/phpmyadmin/');

/**
 * Filename of a configuration file.
 */
define('CONFIG_FILE', CONFIG_DIR . 'config.inc.php');

/**
 * Filename of custom header file.
 */
define('CUSTOM_HEADER_FILE', CONFIG_DIR . 'config.header.inc.php');

/**
 * Filename of custom footer file.
 */
define('CUSTOM_FOOTER_FILE', CONFIG_DIR . 'config.footer.inc.php');

/**
kkih6yb8

kkih6yb81#

查看代码,我发现当phpmyadmin无法访问twig临时目录时,出现了关于tmp目录的消息。这意味着/var/lib/phpmyadmin/tmp/可能可以访问,但/var/lib/phpmyadmin/tmp/twig可能不能(例如,权限错误或丢失)。
也可能是twig临时目录不在/var/lib/phpmyadmin/tmp/下,因为要访问它,它们用途:$this->config->getTempDir('twig'),但要报告有关tmp目录路径的错误,请用途:$this->config->get('TempDir') .
见下图:

if ($this->config->getTempDir('twig') === null) {
            trigger_error(
                sprintf(
                    __(
                        'The $cfg[\'TempDir\'] (%s) is not accessible. ' .
                        'phpMyAdmin is not able to cache templates and will ' .
                        'be slow because of this.'
                    ),
                    $this->config->get('TempDir')
                ),
                E_USER_WARNING
            );
        }

**TLDR:**此消息可能具有误导性。您应该检查分支缓存目录是否可访问(所有权/权限)。

khbbv19g

khbbv19g2#

请检查目录/var/lib/phpmyadmin的权限。tmp的权限似乎是正确的。
文件名:/var/lib
以上目录应该至少有755个权限,或者是同一用户所有权,该用户也可以使用Web服务器。
并检查是否已通过以下命令启用selinux
获得力量

oxf4rvwz

oxf4rvwz3#

我在LEMP堆栈上设置PhpMyAdmin版本5.1.0时遇到了这个问题。发行版是Fedora 33,所有软件都使用默认的仓库。
我发现不同发行版的安装默认值差别很大,并且在为我的特定安排安装时遇到了一些麻烦。很大程度上,这是由于我在故障排除过程中发现的冲突信息。
我这样说是因为这个问题的真实的解决方案取决于根据您的安装设置正确的目录所有者和路径。
在我的安装中,$PMA-DIR/config.inc.php的工作目录存在于/var/lib/phpMyAdmin/中。所以我在登录时收到的错误是:
The $cfg['TempDir'] (/var/lib/phpMyAdmin/temp/) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this.
因此,我检查了主PMA目录的详细信息:ls -l /var/lib/phpMyAdmin这导致:

drwxr-x--- 2 apache apache 4096 Apr  6 02:25 cache
drwxr-x--- 2 apache apache 4096 Mar 16 13:29 config
drwxr-x--- 2 apache apache 4096 Mar 16 13:29 save
drwxr-x--- 3 apache apache 4096 Apr  6 13:58 temp
drwxr-x--- 2 apache apache 4096 Mar 16 13:29 upload

如果我使用httpd作为Web服务器,这将是很好的。但是,我运行的是nginx,所以我需要分别更改所有权:
chown -R nginx:nginx /var/lib/phpMyAdmin
现在,我可以看到ls -l /var/lib/phpMyAdmin/显示:

drwxr-x--- 2 nginx nginx 4096 Apr  6 02:25 cache
drwxr-x--- 2 nginx nginx 4096 Mar 16 13:29 config
drwxr-x--- 2 nginx nginx 4096 Mar 16 13:29 save
drwxr-x--- 3 nginx nginx 4096 Apr  6 13:58 temp
drwxr-x--- 2 nginx nginx 4096 Mar 16 13:29 upload

为了确保phpMyAdmin和我真正讨论的是同一个目录,我编辑了我的$PMA-DIR/config.inc.php,并将相关部分修改为如下所示:

/**
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '/var/lib/phpMyAdmin/upload';
$cfg['SaveDir'] = '/var/lib/phpMyAdmin/save';
$cfg['TempDir'] = '/var/lib/phpMyAdmin/temp';

重新加载nginx并刷新后,错误对我来说消失了。
对于您的用例,很可能是您的用户与所需的用户不同。我看到许多指南将用户列为www-data,但在某些情况下,用户是nobody/apache/httpd
要找到正确的路径,可以运行类似ps aux | egrep '(apache|apache2|httpd|nginx)'的命令。结果中的第一个字段应该是正确的所有者。如上所示,使用chown将其应用到正确的路径。
如果您已经设置了配置的其余部分,但在此之后仍然出现Blowfish设置错误;那么您可能有一个单独的文件夹用于主配置,该主配置也需要更改所有权。
对我来说,这是由于Fedora安装使用/etc/phpMyAdmin目录作为主配置目录。它是由apache拥有的。在将其设置为nginx后,blowfish错误也消失了。

**TL;DR:**在Fedora 33上使用LEMP(Nginx)解决,方法是:

chown -R nginx:nginx /var/lib/phpMyAdmin

x1米20英寸

wgmfuz8q

wgmfuz8q4#

让我们假设此消息的原因。
1.可能是文件夹路径不存在。
1.可能是文件夹存在,但phpmyadmin没有权限访问此文件

  1. My be文件夹存在,phpmyadmin可以读取文件,但不能写入存储twig编译文件所需的文件。
    这是到目前为止我在配置phpmyadmin应用程序时遇到的问题。现在如何解决这个问题:
    1.如果文件夹路径不存在,则创建这些文件夹路径。如果您使用的是Linux,请尝试mkdir -p /var/lib/phpmyadmin/tmp/twig
    1.如果你已经有了一个文件夹路径或者刚刚创建了一个文件夹,你需要设置文件权限和访问权限。
  • cd /var/lib
  • sudo chmod -R 775 phpmyadmin/这设置读取和写入文件权限。

1.设置用户对phpmyadmin的读写权限。对于不同的web服务器和操作系统来说,这有点不同。我将分享如何在apache web服务器上修复这个问题

  • 首先检查运行到apache服务器的用户和组。您可以通过打开此/etc/apache2/envvars文件进行检查。查找APACHE_RUN_USERAPACHE_RUN_GROUP的值
  • 现在我们知道了哪些用户和组被分配了Web服务器。我们必须为该用户和组设置用户权限。
  • cd /var/lib
  • sudo chown -R APACHE_RUN_USER_VALUE:APACHE_RUN_GROUP_VALUE phpmyadmin/

相关问题