简体   繁体   English

Magento 扩展 404 错误

[英]Magento Extension 404 Error

Im stumped!我难住了!

I have a custom extension that works beautifully locally on Mac Leopard, however after pushing live to the host (Centos Linux) I get a Magento 404 error when I try to call the frontend router.我有一个自定义扩展,可以在 Mac Leopard 上完美地在本地运行,但是在实时推送到主机(Centos Linux)后,当我尝试调用前端路由器时出现 Magento 404 错误。

For example this URL: [domain]/shop/index.php/bbyd_sync/index/ Causes a 404 on live but returns "done" locally.例如这个 URL: [domain]/shop/index.php/bbyd_sync/index/ 会导致 404 在现场但在本地返回“完成”。

Here is my config.xml:这是我的 config.xml:

<config>
<modules>
    <Bbyd_Sync>
        <version>0.1.0</version>
    </Bbyd_Sync>
</modules>
<crontab>
    <jobs>
        <bbyd_sync>
            <schedule>
                <cron_expr>*/5 * * * *</cron_expr>
            </schedule>
            <run>
                <model>sync/run::runAll</model>
            </run>
        </bbyd_sync>
    </jobs>
</crontab>
<frontend>
    <routers>
        <sync>
            <use>standard</use>
            <args>
                <module>Bbyd_Sync</module>
                <frontName>bbyd_sync</frontName>
            </args>
        </sync>
    </routers>
</frontend>
<admin>
    <routers>
        <wrapper>
            <use>admin</use>
            <args>
                <module>Bbyd_Sync</module>
                <frontName>syncadmin</frontName>
            </args>
        </wrapper>
    </routers>
</admin>
<adminhtml>
    <acl>
        <resources>
            <all>
                <title>Allow Everything</title>
            </all>
            <admin>
                <children>
                    <system>
                        <children>
                            <config>
                                <children>
                                    <bbyd translate="title" module="run">
                                        <title>BBYD Sync</title>
                                        <sort_order>808</sort_order>
                                    </bbyd>
                                </children>
                            </config>
                        </children>
                    </system>
                </children>
            </admin>
        </resources>
    </acl>
    <translate>
        <modules>
            <Bbyd_Sync>
                <files>
                    <default>BBYD_Sync.csv</default>
                </files>
            </Bbyd_Sync>
        </modules>
    </translate>
</adminhtml>
<global>
    <models>
        <sync>
            <class>Bbyd_Sync_Model</class>
            <resourceModel>sync_mysql4</resourceModel>
        </sync>
        <sync_mysql4>
            <class>Bbyd_Sync_Model_Mysql4</class>
            <entities>
                <run>
                    <table>bbyd_sync</table>
                </run>
            </entities> 
        </sync_mysql4>
    </models>
    <helpers>
        <sync>
            <class>bbyd_sync_helper</class>
        </sync>
    </helpers>
    <resources>
        <sync_setup>
            <setup>
                <module>Bbyd_Sync</module>
            </setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </sync_setup>
        <sync_write>
            <connection>
                <use>core_write</use>
            </connection>
        </sync_write>
        <sync_read>
            <connection>
                <use>core_read</use>
            </connection>
        </sync_read>      
    </resources>  
</global>
<default>
    <bbyd>
        <setup>
            <send_new_customer_account_email>0</send_new_customer_account_email>
        </setup>
        <cron>
            <log_file_name>bbyd_sync.log</log_file_name>
        </cron>
    </bbyd>
</default>

My IndexController.php我的 IndexController.php

class Bbyd_Sync_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction() {
        echo "done";
    }
}

My app/code/local structure (Im using the letters cases as is here):我的应用程序/代码/本地结构(我在这里使用字母大小写):

Bbyd
    Sync
        controllers
            IndexController.php
        etc
            config.xml
            system.xml
        Helper
            Data.php
        Model
            Run.php
            Mysql4
                Run.php
        sql
            sync_setup
                mysql4-install-0.1.0.php

Of course I have /app/code/etc/modules/Bbyd_Sync.xml as well.当然,我也有 /app/code/etc/modules/Bbyd_Sync.xml 。

Anybody have some bright ideas about problems occurring between Mac & Linux platforms for Magento?有人对 Magento 的 Mac 和 Linux 平台之间发生的问题有一些好主意吗? Perhaps casing of files/directories?也许是文件/目录的外壳?

BTW, this is Magento 1.5.顺便说一句,这是 Magento 1.5。

Any help appreciated...(my 1st request so please be gentle!)任何帮助表示赞赏......(我的第一个要求,所以请温柔!)

Step 0: Clear your cache AND sessions on the live server.第 0 步:清除实时服务器上的缓存和会话。

Step 1: Check if your module is installed using the free/open-source Module List Module第 1 步:检查您的模块是否使用免费/开源模块列表模块安装

Step 2: Drop some debugging code in the following method.第2步:在以下方法中删除一些调试代码。 The var_dumps will tell you which files/classes Magento's routers are looking for with your module, but can't find. var_dumps 将告诉您 Magento 的路由器正在使用您的模块查找哪些文件/类,但找不到。

File: app/code/core/Mage/Core/Controller/Varien/Router/Standard.php

protected function _validateControllerClassName($realModule, $controller)
{
    $controllerFileName = $this->getControllerFileName($realModule, $controller);
    if (!$this->validateControllerFileName($controllerFileName)) {
        var_dump($controllerFileName);
        return false;
    }

    $controllerClassName = $this->getControllerClassName($realModule, $controller);
    if (!$controllerClassName) {
        var_dump($controllerFileName);
        return false;
    }

    // include controller file if needed
    if (!$this->_includeControllerClass($controllerFileName, $controllerClassName)) {
        var_dump($controllerFileName);
        return false;
    }

    return $controllerClassName;
}   

Step 3: Debug which 404 page it is .第三步:调试是哪个404页面

Just log out and log in back again admin panel and things will work again:-)只需注销并重新登录管理面板,一切都会再次运行:-)

Resolved!解决!

I could not make progress with Alan's advice, however when I re-built the extension with the ModuleCreator , it all worked without error.我无法按照 Alan 的建议取得进展,但是当我使用ModuleCreator重新构建扩展时,一切正常,没有错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM