2

几天前,我注意到一些属于某个 Magento 扩展名的文件实际上是作为目录创建的,而不是它们应该是的 .png .css 和 .js 文件。更新扩展时会出现错误,因为文件无法覆盖现有目录。我主要注意到这一点是因为 Magento 管理面板中缺少图标。虽然令人费解,但没什么大不了的,我删除了目录 (x4) 并从原始发行版中复制了正确的文件。问题解决了。

我用 find 。-type d " . " 以及 'empty' 选项来识别应该是文件的目录。这可以解决症状,但不能解决原因。大约有 10 个文件,主要是图像,但一些 .js 和 .css 受到影响。

我刚刚通过 Magento connect 运行了 M2e 更新,“成功”,但是注意到管理员中缺少一些图标/图形,我检查了代码并确定了 17 个应该是图像文件的空目录(.png 和 .gif) .

我想我的问题是如何以及为什么会发生这种情况?我怎样才能阻止它再次发生?

我有一个运行 Apache 的专用 CentOS 服务器。安装是通过 Filezilla FTP 上传或 Magento Connect 完成的,看起来很可能是 Connect 导致了问题,这两个扩展在其生命周期中至少被 Connect 更新过一次。

希望有人能启发我,虽然这本身不是一个大问题,但关键文件(而不是图像)可能容易出现同样的问题是一个问题......以前有人见过吗?

干杯罗布

4

1 回答 1

2

这是一个长期存在的问题,存在多个向量,而原始 Magento Connect 团队非常不愿意与外部社区接触的事实加剧了这一问题。

问题是,Magento Connect 包几乎是,但不完全是 tar 档案。Magento Connect 档案的打包和解包由downloaderorlib文件夹中的自定义代码处理(取决于上下文)

downloader/lib/Mage/Archive/
lib/Mage/Archive/

那就是——而不是依赖于命令行的存在tar,这段代码在 PHP 中重新实现了 tar。

这段代码很好地处理了 80% 的用例——但是多年来 Magento 社区已经发现(正如你所知道的)它并不总是按预期工作。代码在内部是一致的,但是尝试用一个版本的 Magento 打包并用另一个版本解包,你会遇到奇怪的边缘情况。当这段代码遇到用实际的 tar 程序制作的档案时,也会出现奇怪的边缘情况——尤其是tar在 OS X 上(至少在 10.6 时代)

因此,此代码有时是错误的,Magento Connect 本身并不能很好地验证上传的扩展,甚至可能使用此代码的某些版本来打包/重新打包用户上传的扩展。

除了“尝试不同的计算机”之外,我从来没有找到一个很好的解决方案,这也是我编写n98-magerun命令来验证已安装的 Connect 软件包的部分原因。

希望有帮助!

于 2015-08-27T01:35:59.333 回答