【问题标题】:Magento Controller Works Windows, not LinuxMagento 控制器适用于 Windows,而不是 Linux
【发布时间】:2011-11-17 19:01:55
【问题描述】:

我创建了一个适用于我的 Windows XAMPP 安装的模块。但是,在 Linux 上进行测试似乎无法正常工作。更具体地说,我的控制器似乎没有加载。

访问 URL www.mysite.com/modulename/standard/ 时,我收到 404 错误。我希望收到一条消息,输出控制器中类定义之前的die('here')

控制器文件是/app/code/local/Namespace/Modulename/controllers/StandardController.php

类在这个文件中定义如下:

class Namespace_Modulename_StandardController extends Mage_Core_Controller_Front_Action

我的 XML 配置文件的摘录在这里:

<frontend>      
    <routers>
        <modulename>
            <use>standard</use>
            <args>
                <module>Namespace_Modulename</module>
                <frontName>modulename</frontName>
            </args>
        </modulename>
    </routers>
    <!-- other blocks here -->
</frontend>

我最初的想法是,这是我在 Windows 上开发时没有注意到的区分大小写的问题。 XML 片段以前如下所示,这也不起作用。另请注意,我已尝试访问 www.mysite.com/Modulename/standardwww.mysite.com/modulename/standard 的两个 XML 版本,但每次都出现 404 错误。

<Modulename>
    <use>standard</use>
    <args>
        <module>Namespace_Modulename</module>
        <frontName>Modulename</frontName>
    </args>
</Modulename>

有人知道可能是什么问题吗?

谢谢。

编辑

根据要求,这是模块的配置文件。这一切似乎都是正确的——模块显示在 Admin/Developer 页面中,模块配置屏幕(在 system.xml 中生成)出现在后端。此外,模块的某些部分(以及看似控制器)正在前端工作!

<config>
<modules>
    <Namespace_Modulename>
        <active>true</active>
        <codePool>local</codePool>
    </Namespace_Modulename>
</modules>
</config>

编辑 2

有些版本可能有用。 PHP 5.3 Magento 1.5.1.0

【问题讨论】:

  • 你能显示app/etc/modules/Namespace_Modulename.xml吗?
  • @jamapag - 已使用 XML 编辑问题。谢谢。
  • 清除缓存 rm -rf var/cache/* ?
  • @Anton S - 是的,缓存已清除(也已禁用)。索引也是最新的。
  • 愚蠢的问题,但是你的Namespace_Modulename_StandardController 类中有indexAction() 方法吗?

标签: php xml windows linux magento


【解决方案1】:

试试这个代码:

<frontend>      
    <routers>
        <namespace_modulename>
            <use>standard</use>
            <args>
                <module>Namespace_Modulename</module>
                <frontName>modulename</frontName>
            </args>
        </namespace_modulename>
    </routers>
    <!-- other blocks here -->
</frontend>

【讨论】:

  • 恐怕不行。尝试使用两个 URL(www.mysitehere.com/modulename/standard/www.mysitehere.com/modulename/standard/)以及 &lt;frontName&gt; 标记的大写和非大写版本。
【解决方案2】:

您的控制器实际上命名为 StandardController.php 吗?在区分大小写的文件系统上,“控制器”之前的部分应以大写字母开头,所有其他字母应小写

【讨论】:

  • @Pete171 很奇怪的问题...你能把你的模块代码上传到某个地方让我仔细看看吗?
【解决方案3】:

我不敢相信!

我的开发框似乎在我不知情的情况下被更新,并且在此过程中我的 Apache 配置被更改了!我终于意识到我没有收到 Magento 通常的 404 错误页面,而只是一个普通的、丑陋的 404 页面,并检查了我的 Apache 错误日志,上面说文件 /Modulename/standard 不存在。更新我的 Apache 配置以添加以下内容可解决问题:

<Directory "mymagentodirectory">
AllowOverride All
</Directory>

我不敢相信。感谢所有花时间阅读和回复的人! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    相关资源
    最近更新 更多