【发布时间】:2015-08-14 05:56:26
【问题描述】:
出于所有意图和目的,这应该是有效的。但它不是。
结构:
-
app/etc/modules/Company_Modulename.xml
<?xml version="1.0"?> <config> <modules> <Company_Modulename> <active>true</active> <codePool>community</codePool> <version>1.0.0</version> </Company_Modulename> </modules> </config> app/code/community/Company/Modulename/etc/config.xml
<?xml version="1.0"?> <config> <modules> <Company_Modulename> <version>1.0.0</version> </Company_Modulename> </modules> <global> <helpers> <modulename> <class>Company_Modulename_Helper</class> </modulename> </helpers> </global> </config>
- app / code / community / Company / Modulename / Helper / Data.php
<?php class Company_Modulename_Helper_Data extends Mage_Core_Helper_Abstract { public function sayHello() { die('hello'); } }
- app/design/frontend/custom/default/template/page/2columns-right.phtml
... <?php Mage::helper('modulename')->sayHello(); ?> ...
这应该是用“你好”这个词来死的。相反,我得到:
警告:include(Mage/Modulename/Helper/Data.php):打开失败 流:中没有这样的文件或目录 /var/www/html/testing/lib/Varien/Autoload.php 在第 94 行
为了以防万一,我已将所有模块文件的权限设置为 777。 有什么想法吗?
编辑:我尝试将 Data.php 重命名为 Helper.php (也修改了类名),并尝试使用 Mage::helper('modulename/helper')->... 调用它,正如预期的那样 - 它抛出了同样的错误,将它正在寻找的文件名更改为 Helper.php 但仍然使用相同的路径。
编译已关闭,缓存已禁用(无论如何在每次测试之前都将其清除)
【问题讨论】:
-
每当自动加载器找不到命名空间时(警告:include(Mage/Modulename/Helper/Data.php):),通常是因为拼写错误或文件/目录在包含中不可用小路。检查您的 config.xml 和文件系统路径。
-
嘿。路径和配置是正确的。但是当我检查时,我注意到 www-data 用户无权访问这些文件。必须授予它对整个命名空间文件夹(公司)的权限。不过,感谢您的提示。