无法覆盖Magento Block(可能与缓存相关)

时间:2014-04-24 23:09:29

标签: php magento

由于某些奇怪的原因,我无法覆盖生产服务器上的Mage_Catalog_Block_Product_List

我有Magento在我开发的本地运行,然后我rsync到我的生产服务器,所以我很确定文件系统是相同的(除了缓存)。

这是我到目前为止所做的事情 - 请注意,这在本地工作完全,因为某些原因不在我的生产服务器上:

  • 创建app/code/local/Mage/Catalog/Block/Product/List.php以覆盖核心版本。

  • 添加了必要的代码,在本地测试,运行正常。更新的代码只是更新_getProductCollection()函数,以便Magento按创建日期的降序排序产品,如果设置了$_GET['newest']。这在本地工作正常

  • rsync'ed我对生产服务器的更新。没用,所以我认为它与缓存有关。

  • 关闭缓存,刷新索引。仍然没有。

  • 删除了var/cache个文件,但仍然没有。

  • 比较后端配置以查看是否有任何关闭。一切都很好。

  • 在生产版本的新块(List.php)中添加了无效代码,因此会导致错误。没有错误(?!)。好像我上传的新文件被忽略了。

任何想法都会受到高度赞赏,因为我不知所措。

我正在使用Magento v 1.7.0.2

1 个答案:

答案 0 :(得分:2)

您的生产服务器是否使用Magento compilation模式? Magento编译模式实际上不是一个编译,它只是将所有类文件复制出代码冷却,然后放在一个文件夹中。这极大地加速了PHP(尤其是旧版本)。如果您已将新文件上载到本地代码池以进行覆盖并且您正在使用编译模式,则可能需要重新编译类(System -> Tools -> Compiler或{{1中的命令行脚本文件夹)。

另外,您的生产系统是否使用APC?如果是这样,那么PHP已将该类的旧版本缓存到APC中,并且在清除APC缓存之前不会查看新版本。

最后 - 你是从Mac / Windows机器上传到unix环境吗?如果是这样,请尝试在文件中查看非常难以区分大小写错误。我通常会从根文件夹中尝试显式的shell/,以确保文件路径的名称与我认为的一样。

希望有所帮助!