我试图在Magento中调试PayPal评审过程。每当我尝试转储以下变量时,我都会得到一个白页:
//the variable declaration:
$shippingAddress = $this->getShippingAddress();
//the dump that breaks the page:
<?php echo '<pre>';print_r($shippingAddress);echo '</pre>'; ?>我还尝试在页面上使用一个变量,该变量用于除if语句之外的其他内容。
//this variable displays results
<?php echo '<pre>';print_r($billingBlock->setShowAsShippingCheckbox(true)->toHtml());echo '</pre>'; ?>
//however, this one does not:
<?php echo '<pre>';print_r($billingBlock);echo '</pre>'; ?>我只是想知道是什么原因导致我的var_dump打破了这个页面?如果不能转储,如何查看对象中的内容?
发布于 2014-02-05 21:51:54
首先,PHP从来没有“仅仅是白页”。当您得到一个空白屏幕时,这意味着PHP的执行由于某种原因而停止。但是,除非您的服务器被配置为不记录错误,否则PHP错误日志或Magento异常日志应该会出现错误。
就您的具体问题而言,Magento的许多对象包含对大量信息的引用- and,有时引用是循环的。PHP的var_dump和print_r函数将盲目地遵循这些循环引用,并尝试打印所有内容。这最终导致PHP使用比memory_limit ini设置所允许的内存更多的内存,并停止执行。
大多数PHP专业人员使用xDebug扩展来解决这个问题。xDebug扩展有一个经过修改的var_dump,它将限制转储的信息量,从而防止上述内存限制问题。如果xDebug仍然无法解决内存限制问题,则需要调整xdebug.var_display_max_children、xdebug.var_display_max_data和xdebug.var_display_max_depth ini设置。(有些PHP发行版的初始设置过高)
如果这是不可能的,对你的var_dump谨慎一点仍然会有帮助。
使用它来计算变量类型。
var_dump(get_class($thing));如果它是Magento对象,请使用它查看其数据键
var_dump(array_keys($thing->getData()));然后输出单个数据成员。
var_dump($thing->getData('key_name'));
var_dump($thing->getKeyName()));发布于 2014-02-05 21:45:04
PHP解析和致命错误将产生这种情况。您可能希望查看错误日志。
您可以尝试在php文件的开头添加以下行(就在打开的PHP标记之后)“
ini_set('display_errors',1);
error_reporting(E_ALL);https://stackoverflow.com/questions/21588862
复制相似问题