试图克隆Magento 1.4.x站点进行开发,如何调试白屏死机


Trying to clone Magento 1.4.x site for development, how do I debug the white-screen-of-death?

我有完整的shell访问权限,和phpMyAdmin,我需要让这个网站在开发域/新路径(远程服务器,也主机生产站点)上工作。值得注意的是,我的没有有服务器错误日志。

值得指出的是,我很幸运地让它在我的本地服务器上工作,我理解更新不安全的&安全basurl的core_config_data表,但我似乎不能得到我们的远程开发服务器上的网站工作,我只是得到白屏。(可以肯定的是,我已经尝试在index.php中增加error_reporting和error_level,但没有任何改变……这是我能从网上收集到的所有信息,除了在管理中启用它,这目前还不是一个选项)。

好的,提前感谢,任何建议都很感谢。

编辑:我所做的事情:

  • 错误报告设置在index.php的顶部为error_reporting(E_ALL); ini_set('display_errors', 'On');
  • 检查数据库中是否启用了日志记录(已经启用)
  • 我能够死亡/回声输出(使用类似die('arf');的东西),直到index.php脚本的最后一行,它执行Mage::run($mageRunCode, $mageRunType);,我没有深入到这个过程中,我确信它只是直接进入核心&我的问题可能在别处。
  • enabled Mage::setIsDeveloperMode(true);
  • 没有新文件写入var/report

编辑#2:djot下面的答案给了我一个正确的方向,并给了我一些输出。它实际上有7800行,所以这里是它结束前的最后几行,我稍后会更新它,当我有时间进一步了解它:

File: /var/www/vhosts/somesite.com/subdomains/dev/httpdocs/shop/errors/processor.php[472]<br>
<script type="text/javascript">File: /var/www/vhosts/somesite.com/subdomains/dev/httpdocs/shop/errors/processor.php[475]<br>
window.location.href = 'http://dev.somesite.com/shop/errors/report.php?id=498275850056&skin=default';File: /var/www/vhosts/somesite.com/subdomains/dev/httpdocs/shop/errors/processor.php[476]<br>
</script>File: /var/www/vhosts/somesite.com/subdomains/dev/httpdocs/shop/errors/processor.php[477]<br>

您可以采取以下步骤:

  • 确保PHP错误报告是启用的。PHP生产服务器-打开错误消息
  • 检查var/logs中的Magento错误日志如何启用Magento数据库中的exception.log和system.log ?
  • 在index.php
  • 的第一行尝试var_dump("Something, Please!")
  • 如果你仍然没有看到任何问题,那么可能是PHP配置的问题。

调试白屏死亡是可能的,在特殊的行,断点处打印或回显。不幸的是,如果您有很多代码,这是非常烦人的。因此,一种解决方案是在每一行都打勾,直到php崩溃。

declare(ticks=1);
register_tick_function('TickLine', TRUE);

function TickLine() {
  $backtrace = debug_backtrace();
  echo 'File: ' . $backtrace[0]['file'] . '[' . $backtrace[0]['line'] . ']<br>';
}

在index.php文件中查找以下行:

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE'])) {
    Mage::setIsDeveloperMode(true);
}

让它:

if (isset($_SERVER['MAGE_IS_DEVELOPER_MODE']) || true) {
    Mage::setIsDeveloperMode(true);
}

另外,清除var/report(至少在1.6中是这样的),然后刷新,应该有一个新的错误。

如果你需要更多的想法,请告诉我。