phpMyadmin不能导入文件错误:open_basedir >在没有访问/tmp目录的情况下启用


phpMyadmin can’t import file with error: open_basedir > enabled without access to the /tmp directory

在Debian上安装apache-mysql-php后。我不能通过phpMyAdmin导入.sql文件到MySQL。错误提示:

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

open_basedir/etc/php5/apache2/php.ini/etc/php5/cli/php.ini中都有注释和safe_mode为OFF。

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

当您说open_basedir被注释掉时,phpinfo()的输出是什么?这里应该有一个open_basedir设置。也许有一个.htaccess文件——或者另一个php.ini配置——在某处设置了open_basedir。也就是说,根据官方phpMyAdmin文档:

从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/

此外,这个问题似乎在PHP相关错误的社区wiki参考中有涉及:

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

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

所以在你的情况下,你可以调整php.ini设置为:

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

请注意,在这种与网络相关的问题中,唯一重要的php.ini/etc/php5/apache2/php.ini。命令行php.ini位于这里/etc/php5/cli/php.ini是严格的命令行使用,与Apache PHP模块没有任何关系。

我有同样的问题,并解决如下:
我打开文件/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,但仅此而已。

这是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 .

来解决。

Viter Rod上面的回答的一个补充是,您还必须授予对tmp文件夹的完全访问权限。所以运行:

sudo chmod 777 tmp/