由于一些奇怪的原因,我无法在生产服务器上覆盖Mage_Catalog_Block_Product_List
。
我让Magento在我开发的地方本地运行,然后我rsync到我的生产服务器,所以我很确定文件系统是相同的(除了缓存)。
以下是我到目前为止所做的工作-请注意,这在本地运行得很好,只是由于某种原因而不能在我的生产服务器上运行:
-
创建了
app/code/local/Mage/Catalog/Block/Product/List.php
以覆盖Core版本。 -
添加了必要的代码,在本地测试,效果良好。更新后的代码只是更新
_getProductCollection()
函数,这样,如果设置了$_GET['newest']
,Magento就可以按created_at日期降序对产品进行排序。这在本地运行良好 -
rsync将我的更新发送到生产服务器。不起作用,所以我认为它与缓存有关。
-
关闭缓存,刷新索引。还是什么都没有。
-
删除了
var/cache
文件,仍然没有。 -
比较后端配置,看看是否有什么问题。一切看起来都很好。
-
在生产版本的新块(List.php)中添加了无效代码,因此会导致错误。没有错误(?!)。就好像我上传的新文件被忽略了一样。
任何想法都将不胜感激,因为我不知所措。
我在Magento v 1.7.0.2
您的生产服务器是否使用Magento编译模式?Magento编译模式并不是真正的编译,它只是将代码冷却后的所有类文件复制到一个文件夹中。这大大加快了PHP(尤其是旧版本)的速度。如果您已经将一个新文件上载到本地代码池进行重写,并且您正在使用编译模式,则可能需要重新编译类(System -> Tools -> Compiler
或shell/
文件夹中的命令行脚本)。
此外,您的生产系统是否使用APC?如果是这样,那么PHP已经将类的旧版本缓存到APC中,并且在清除APC缓存之前不会查看新版本。
最后,您是从Mac/Windows机器上传到unix环境吗?如果是这样的话,试着仔细查看文件中的大小写敏感性错误。我通常会从根文件夹中尝试显式的ls
,以确保文件路径的命名与我想象的一样。
希望能有所帮助!