好的,这是一个愚蠢的错误。与权限或我认为可能的任何其他事情无关。在我甚至认为没有加载的文件中,这是一个简单的语法错误。
让我想起了我曾经有过的第一位计算机科学老师的引用:
“如果您确定所有代码都是正确的,并且该程序不起作用,那么您确定的是错误的。”
抱歉鹅追。
我的PHP代码中有一个错误,现在几天来一直在恐吓我。
我正在尝试将新模块绑定到现有的Magento(v1.4)站点,尽管我对Magento框架非常陌生。我认为我非常接近在后端显示的块上显示“Hello,World”,但是当选择菜单项时我收到500错误。
我设法将它(使用echo stmts)跟踪到Layout.php文件中的一行(app \ code \ core \ Mage \ Core \ Model \ Layout.php,第472行):
if (class_exists($block, false) || mageFindClassFile($block)) {
$temp = $block;
echo "<p>before constructor: $temp</p>";
$block = new $block($attributes);
echo "<p>after constructor: $temp</p>";
}
对于我的块,这只产生“在构造函数之前...”,所以我知道这是失败的。多一点调试显示$ block中的类(我试图显示的新块)不存在。我原以为__autoload函数可以解决这个问题,但__autoload中的回声都没有显示出来。
作为最后的努力,我在Mage.php中尝试了一个包含块类绝对位置的语句,但在回声之前和之后的相似内容显示包含语句成为断线。
我很想开始考虑“权限”,但我并不精通所有这些服务器管理方面,而且我对测试服务器的访问权限有限(测试服务器属于客户端)。 / p>
预测问题:PHP日志文件中没有报告错误。我实际上并不相信这个网站会向日志文件报告错误(我没有看到任何来自此网站的内容),尽管客户端确定所有内容都已打开。
IIS 7.集成模式,我很确定。任何人都知道可能导致这种情况的原因吗?
Per Joe的问题:
该块的名称为 FiveTalent_BikeCompat_Adminhtml_Block_Bikes 。
该类位于文件 [magento_root] \ app \ code \ local \ FiveTalent \ BikeCompat \ Adminhtml \ Block \ Bikes.php 中。
mageFindClassFile函数确认它找到了该类的文件。
我很确定我正在使用Magento的加载方法。 不可否认,路径模式与您的示例略有不同,但我认为这是因为我正在尝试创建一个Adminhtml块。 这是正在执行的控制器上的操作:
public function indexAction() {
$this->loadLayout();
$block = $this->getLayout()->createBlock('adminhtml/bikes', 'bikecompat');
$this->_addContent($block);
$this->renderLayout();
}
同样,我回到了有权读取文件的网络服务器(在本例中是IIS)的问题。 我会看看我是否无法抓住有权访问服务器的人来检查这一点。
答案 0 :(得分:0)
error_log
php配置指令可用于设置自定义错误日志
并且log_errors
会在那里指出所有错误消息。
答案 1 :(得分:0)
__autoload中的错误将不会显示,evar。你自己在__autoload。 我会认真测试我的__autoload函数。我会检查大写错误,这可能是一个问题。
答案 2 :(得分:0)
Magento自动加载器工作得很好。请回显$ block的值并将其添加到您的问题中。您的块名称可能遵循命名约定:YourCompany_YourModule_Block_Some_Path
。如果不是这样,那可能是你的错误。如果是这种情况,请确保该文件(显然,与您的类匹配的切换路径)app/code/local/YourCompany/YourModule/Block/Some/Path.php
存在并包含正确的类声明。如果也是如此,请确保Apache有权读取该文件。
一旦你发现了这个问题,你可能需要考虑转向Magento的加载方法。在Magento中执行此操作的“正确”方法(再次假设上述类名称)为:
<?php
Mage::getLayout()->createBlock("yourmodule/some_path");
使用Magento加载程序可以在以后为您节省很多麻烦,并允许其他人更有把握地使用您的Magento代码。
希望有所帮助!
谢谢, 乔