2012-11-28 53 views
6

我一直在使用PHP一段時間,但對Smarty來說還是比較新的。強制Smarty顯示PHP錯誤

我正在使用Prestashop,我注意到Smarty似乎吃掉了所有的PHP錯誤 - 當PHP代碼出錯時,.tpl文件只輸出一個空白頁。我一直在嘗試,但我無法讓Smarty顯示任何PHP代碼輸出,即使有錯誤。

PHP錯誤報告設置爲顯示錯誤。

所以,舉例來說,假設這是使用example.php文件:

<?php 
//included classes etc go here, irrelevant for this issue 

error_reporting(E_ALL^E_NOTICE); 

echo obvious wrong syntax" 
?> 

此文件連接到example.tpl可以完美融入模板模塊的輸出。

很明顯,它應該會拋出一個錯誤。我如何讓Smarty實際顯示該錯誤?

回答

12

要激活調試模式,去config/config.inc.php

找到以下行和恰克offon的第一個設置爲true,第二

/* Debug only */ 
@ini_set('display_errors', 'on'); 
define('_PS_DEBUG_SQL_', true); 

這將顯示PHP和SQL錯誤(這可能足以讓您解決「空白頁」)。

還有一個blog post on prestashop site about p() and d() methods and how to track exceptions

要激活模板調試中的Prestashop版本比1.5老,去配置/ smarty.config.inc.php

查找以下行並將其設置爲true

$smarty->debugging = true; 

當您刷新頁面時,應該呈現​​。

要激活的Prestashop模板調試1.5+,您可以通過管理控制檯

首選項>性能> Smarty的

使Smarty的調試和設置Always open console但控制檯將開放給大家(不好的活網站:)

或設置Open console with URL parameter (SMARTY_DEBUG)並將?SMARTY_DEBUG添加到您的URL的末尾看到控制檯

希望這會有所幫助。

+0

非常好,謝謝! – jovan

+0

這個cofing/config.inc.php文件在哪裏。 我正在使用XAMPP。 和在XAMPP中只有1個cofing.inc.php文件位於phpmyadmin文件夾內,並且沒有任何與此相關的內容? –

+0

我的回答是關於Prestashop 1.5的,只需在下面查看@Rocker Maruf的回答Prestashop 1.6+ –

1

我見過@Sergei Guk的答案和偏離課程,這是一個相當不錯的答案。不過,prestashop自從發佈1.6版本以來。

所以如果你想顯示prestashop v 1.6.0中的所有錯誤。6,你只需要去配置/ defines.inc.php

更換define('_PS_MODE_DEV_', false);define('_PS_MODE_DEV_', true);

什麼它實際上做的是設置一個常數,在下一行則檢查「_PS_MODE_DEV_」爲真,那麼它會顯示prestashop中的各種錯誤

if (_PS_MODE_DEV_) 
{ 
    @ini_set('display_errors', 'on'); 
    @error_reporting(E_ALL | E_STRICT); 
    define('_PS_DEBUG_SQL_', true); 
} 
else 
{ 
    @ini_set('display_errors', 'off'); 
    define('_PS_DEBUG_SQL_', false); 
} 

我測試過它,它工作正常。