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
函数定义行中删除 string
和 int
类型提示进行更正时效果很好,因为标量值(如 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”