我对此完全感到困惑。我打包了一个扩展并手动将其安装在一个新的Magento实例上。 (包装和安装机都运行Magento 1.7)。安装顺利进行,除了我安装的每个文件都变成了一个以文件命名的文件夹。每个文件。有没有人碰到这个?它可能是Magento的错误吗?
答案 0 :(得分:4)
当我手动创建用作Magento Connect存档的tar
存档时,我常常看到此问题。不幸的是,我没有解决方案,但这是我对这个问题的理解。
虽然Magento Connect tgz
软件包在技术上是gzip压缩tar档案 - 在不标准* nix tar
工具中创建和提取这些档案的代码。相反,Magento实现了自己的打包和解包Magento Connect的tar代码
downloader/lib/Mage/Archive/Tar.php
不幸的是,这种打包和解包代码尚未在操作系统或使用标准* nix工具创建的tar档案中进行稳健测试。这个代码的问题是我的Mac OS系统上通过tar
创建的档案不会在运行linux的系统上使用Magento Connect的代码正确解压缩。
难以追查,难以报道,难以重现意味着难以修复。
当Magento Connect解压缩tgz
文件时,正在创建这些目录。我99%肯定你的目录是由这段代码创建的
#File: downloader/lib/Mage/Archive/Tar.php
if (in_array($header['type'], array("0",chr(0), ''))) {
if(!file_exists($dirname)) {
$mkdirResult = @mkdir($dirname, 0777, true);
if (false === $mkdirResult) {
throw new Mage_Exception('Failed to create directory ' . $dirname);
}
}
$this->_extractAndWriteFile($header, $currentFile);
$list[] = $currentFile;
} elseif ($header['type'] == '5') {
if(!file_exists($dirname)) {
$mkdirResult = @mkdir($currentFile, $header['mode'], true);
if (false === $mkdirResult) {
throw new Mage_Exception('Failed to create directory ' . $currentFile);
}
}
$list[] = $currentFile . DS;
这是Magento解压缩档案并创建文件夹的两个位置。出于某种原因,在您的两个系统中存在某种情况,其中数据被打包或解包,错误地进出存档文件。尝试使用命令行工具或操作系统内置的非归档程序手动取消归档tgz
文件。如果发生了奇怪的事情,那么至少你知道包装代码就是问题所在。
这绝对是一个错误,虽然我会报告,但唯一的“解决方案”是不在本地计算机上创建存档(我意识到这是一个糟糕的解决方案,但我们的问题不是问题为什么和所有那些)
答案 1 :(得分:1)
这是自1.7以来一直存在的错误,因为在读取@././LongLink
标头时,if比较永远不会评估为false。我在这个问题上回答得更多:
答案 2 :(得分:0)
我发现将OS X上的Magento Extension打包到magento文件夹时会发生问题。仅在Windows系统上创建文件夹。
这可能发生在这里吗?
波多黎各
答案 3 :(得分:0)
我遇到了它,因为某些原因我的插件文件设置了后缀.gz 所以它是plugin.tgz.gz 将其解压缩到plugin.tgz解决了我的问题
答案 4 :(得分:0)
我认为这个问题是因为PHP版本。我在Magento 1.8.1上安装扩展时遇到了同样的问题,但我通过更改/downloader/lib/Mage/Archive/Tar.php文件中的_getFormatParseHeader()函数找到了修复。
最初的功能是:
protected static final function _getFormatParseHeader()
{
return 'a100name/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1type/a100symlink/a6magic/a2version/'
. 'a32uname/a32gname/a8devmajor/a8devminor/a155prefix/a12closer';
}
我把它改为:
protected static final function _getFormatParseHeader()
{
if (version_compare(phpversion(), '5.5.0', '<') === true) {
return 'a100name/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1type/a100symlink/a6magic/a2version/'
. 'a32uname/a32gname/a8devmajor/a8devminor/a155prefix/a12closer';
}
return 'Z100name/Z8mode/Z8uid/Z8gid/Z12size/Z12mtime/Z8checksum/Z1type/Z100symlink/Z6magic/Z2version/'
. 'Z32uname/Z32gname/Z8devmajor/Z8devminor/Z155prefix/Z12closer';
}
答案 5 :(得分:0)
非常讨厌的bug。
对我而言,我将手动打包的文件从*.tar.gz
重命名为*.tgz
解决了它。
至少它适用于我的ubuntu 15.04
使用magento 1.8进行测试
答案 6 :(得分:-1)
在向扩展程序添加内容时,您更有可能选择错误的路径。
对我来说,当我从layout / base(而不是layout / base / default)添加(不存在的)文件时,就会发生错误。