在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/tmp
。config.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:Apache24htdocs
(使用你的路径到htdocs文件夹)和upload_tmp_dir = C:Apache24htdocstmp
.
Viter Rod上面的回答的一个补充是,您还必须授予对tmp文件夹的完全访问权限。所以运行:
sudo chmod 777 tmp/