【问题标题】:phpMyadmin can’t import file with error: open_basedir > enabled without access to the /tmp directoryphpMyadmin 无法导入文件并出现错误:open_basedir > 已启用而无法访问 /tmp 目录
【发布时间】:2014-07-13 19:50:17
【问题描述】:

在 Debian 上安装 apache-mysql-php 之后。我无法通过 phpMyAdmin 将 .sql 文件导入 MySQL。错误说:

上传的文件无法移动,因为服务器有 open_basedir 在不访问 /tmp 目录的情况下启用(用于临时文件)。

open_basedir/etc/php5/apache2/php.ini/etc/php5/cli/php.ini 中都有注释 并且安全模式已关闭。

我将777 权限设置为/var/tmp 仍然得到错误。

【问题讨论】:

  • 您是否在进行更改后重新启动了网络服务器?还要仔细检查phpinfo(); 以确保您正在修改正确的 php.ini。
  • 是的,我做到了。仍然有错误。
  • 您能否检查sys_get_temp_dir(); 并确保该位置的权限正常?
  • 返回 /tmp 文件夹。那里的权限也是777。

标签: php mysql apache phpmyadmin


【解决方案1】:

这是php.ini 文件的问题。问题是 open_basedir 没有设置。您必须将其设置在php.ini 中,并将upload_tmp_dir 设置在open_basedir 之下。

在 Windows 中也存在同样的问题。可以通过设置即open_basedir = C:\Apache24\htdocs(使用您的htdocs文件夹路径)和upload_tmp_dir = C:\Apache24\htdocs\tmp来解决。

【讨论】:

  • 在我的情况下,我有两个相同的系统(我认为),但后来安装了一个。显然,在过渡期间,默认系统 upload_tmp_dir 必须更改,因为该值未在任一系统中设置,但在一个系统中失败并在另一个系统中起作用。我将故障机器中的值更改为 /tmp 和 poof 它允许上传。
【解决方案2】:

上面Viter Rod's 答案的附录是您还必须授予对 tmp 文件夹的完全访问权限。所以运行:

sudo chmod 777 tmp/

它应该在那之后工作。

【讨论】:

  • OP 已经说过,即使有 777 权限,错误仍然存​​在。
【解决方案3】:

我遇到了同样的问题,解决方法如下:
我打开文件 /etc/phpmyadmin/apache.conf 发现里面有一个带有参数的标签。 最后一个是open_basedir

php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/

我只是在前面加上 /tmp/: 就解决了我的问题

php_admin_value open_basedir /tmp/:/usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/

当然我必须在那之后重新启动 apache,但仅此而已。

【讨论】:

    【解决方案4】:

    虽然你说open_basedir 被注释掉了,但phpinfo() 的输出是什么?那里应该有一个open_basedir 设置。也许有一个.htaccess 文件——或另一个php.ini 配置——在某处设置open_basedir。也就是说,根据the official phpMyAdmin docs

    从 2.2.4 版本开始,phpMyAdmin 支持带有 open_basedir 的服务器 限制。但是,您需要创建临时目录和 将其配置为 $cfg['TempDir']。上传的文件将被移动 在那里,并在执行您的 SQL 命令后,删除。

    所以当你说open_basedir 被注释掉——暗示它没有被使用——也许你应该打开你的phpMyAdmin 配置并将cfg_TempDir 设置为指向/var/tmpconfig.php 文件位于 Ubuntu 12.04 中:

    /usr/share/phpmyadmin/config.inc.php
    

    请注意,错误消息指的是/tmp/,但您指的是/var/tmp/

    另外,the issue seems to be covered here 在社区 wiki 参考中针对 PHP 相关错误:

    修复通常是更改PHP配置,相关的 设置称为 open_basedir。

    有时使用了错误的文件或目录名称,然后修复 使用正确的。

    因此,在您的情况下,您也许可以调整 php.ini 以进行此设置:

    open_basedir "/var/tmp/:/tmp/:/"
    

    请注意,在此类网络相关问题的情况下,唯一重要的php.ini/etc/php5/apache2/php.ini。位于此处 /etc/php5/cli/php.ini 的 CLI php.ini 仅供 CLI 使用,与 Apache PHP 模块无关。

    【讨论】:

    • 好的,这个答案有帮助,但我实际上必须做的是纠正这个问题(Debian Jenny)编辑 /etc/phpmyadmin/apache.conf 并在那里添加“:/tmp/”(不带引号)在“php_admin_value open_basedir”行的末尾
    猜你喜欢
    • 2019-05-29
    • 2017-12-13
    • 2018-03-02
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 2021-10-25
    • 2012-06-30
    • 2012-03-26
    相关资源
    最近更新 更多