phpMyAdmin 不加载压缩不支持的数据库导入文件 (application/gzip)

Posted

技术标签:

【中文标题】phpMyAdmin 不加载压缩不支持的数据库导入文件 (application/gzip)【英文标题】:phpMyAdmin doesn't load database import file with unsupported compression (application/gzip) 【发布时间】:2014-07-24 20:20:18 【问题描述】:

我从旧的 lubutu 版本升级到 14,现在运行 php 5.5 和 phpMyAdmin 4.0.10deb1,我经常在主机之间移动小型 mysql 数据库导出(700KB gzip,大约 7-10MB 解压 SQL)。

您尝试加载压缩不支持的文件(应用程序/gzip)。您的配置未实现或禁用对它的支持。

这一切都在较旧的 PHP 设置上正常运行,我不确定这是 mime 类型的事情还是配置问题。

我可以提供详细的 phpinfo() 转储,但有 zlip、phar 等:

Registered PHP Streams  https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip

Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, tls

Registered Stream Filters   zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk

gzip 压缩的 sql 文件没有损坏,它们可以手动解压缩和加载。如果有一些配置设置你可以建议我试试看

【问题讨论】:

在 ubuntu14.04 上出现同样的问题(在 12.10 上不是问题)。你找到解决办法了吗? 还没有,令人沮丧的是.. 下一步是挖掘 PHPMyAdmin 并找出它所期望的(流/处理程序)等 我发现kb.parallels.com/en/116645 说(实际上)它坏了。那是在 2011 年! 另见serverfault.com/questions/197418/… hmmm.. 重读 Registered Stream 过滤器行并查看我的 PHPMyAdmin 导入显示,它确实反映不支持 GZip 文件可能已压缩(bzip2、zip)或未压缩。 【参考方案1】:

我在不同的配置下遇到了同样的问题:Ubuntu 16.04 + PHP 7.0 + VirtualMin。 根本没有安装 php7.0 的 zip 库,所以这解决了问题:

apt-get install php7.0-zip

编辑:这适用于 php 7.0,该命令必须适合您的 php 版本(7.x)

【讨论】:

这是解决方案,应该被接受。谢谢! 它也适用于我。附: php7.0-zip安装后别忘了重启apache服务。 适用于亚马逊 aws - yum install php70-zip 是的,这是目前最好的解决方案。如果仍在使用 PHP 5.6,你也可以apt install php5.6-zip 在 Ubuntu 发行版中,对于 php7.2,您可以使用 apt install php7.2-zip【参考方案2】:

从这里修复 http://piwigo.org/forum/viewtopic.php?pid=151458

if (extension_loaded('zlib') && !function_exists('gzopen') && function_exists('gzopen64'))

  function gzopen($filename, $mode, $use_include_path = 0) 
    return gzopen64($filename, $mode, $use_include_path);
  

在您的 /etc/phpmyadmin/config.inc.php 中。然后它将在 apt-get 升级后存活下来。

【讨论】:

当通过从 gzopen 函数定义行中删除 stringint 类型提示进行更正时效果很好,因为标量值(如 int 或 string)的类型提示是 not allowed 这确实有效!感觉令人讨厌的是 ubuntu 14.04 有这么多“为什么会改变” - 惊喜。添加仅用于导入数据库转储的代码是..“好悲伤”:) 有人知道官方错误报告或票证的链接吗?【参考方案3】:

这里有一个替代方案。

从 phpmyadmin 下载了一个 SQL 文件到本地笔记本电脑。 在上传到新服务器之前,我在 finder 中压缩了本地表单。 (这是错误的)因为这会将 __MACOS 文件夹添加到压缩文件中。我的文件.sql.zip

生成相同的错误消息。

phpMyAdmin 不加载不受支持的数据库导入文件 压缩(应用程序/gzip)

要阻止这种情况的发生,只需从命令行 gzip 文件,这样您就拥有了..

gzip myfile.sql

我的文件.sql.gz

然后上传。

【讨论】:

【参考方案4】:

感谢所有 cmets,查看问题中的一些链接这里:http://kb.parallels.com/en/116645

/usr/share/phpmyadmin/import.php 提供以下内容,将 gzopen 更改为 gzopen64 即可解决问题

        case 'application/gzip':
        if ($cfg['GZipDump'] && @function_exists('gzopen')) 
            $import_handle = @gzopen($import_file, 'r');
         else 
            $message = PMA_Message::error(
                __('You attempted to load file with unsupported compression (%s). Either support for it is not implemented or disabled by your configuration.')
            );
            $message->addParam($compression);
            PMA_stopImport($message);
        
        break;

【讨论】:

同意。 Ubuntu的愚蠢选择。我更喜欢将它添加到不被 apt 覆盖的配置文件中,这样包仍然可以自动更新。请看下面我的回答。感谢您的所有帮助。【参考方案5】:

在 CentOS 8 上

yum install php-pecl-zip

应该修复它。

【讨论】:

【参考方案6】:

你可能需要配置你的 apache 服务器:

查看此链接了解更多信息:http://httpd.apache.org/docs/2.2/mod/mod_deflate.html

【讨论】:

不是Apache级别的,这是PHP级别解压的唉

以上是关于phpMyAdmin 不加载压缩不支持的数据库导入文件 (application/gzip)的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL 数据库导出到 phpMyAdmin 5.1.65

WAMP / PHPMyAdmin 警告:不支持声明“strict_types”

如何通过 phpmyadmin 导入非常大的查询?

使用 UTF-8 编码,具有特殊属性/外来字符的 CSV 文件在导入 MySQL (phpMyAdmin) 时不保留

cpanel中的Phpmyadmin导入数据库不起作用

导入 db phpMyAdmin - 错误格式参数不正确