我正在为 Prestashop 开发一个 PHP 模块,我在尝试调试代码时遇到了困难。每当有东西掉下来时,它不会显示错误,只是一个空白页面 - 无论是在模块被钩住的前端,还是在后端模块页面上。
我正在尝试在另一个类或另一个函数中编写,但它根本不喜欢它。
它在本地开发服务器上,出现 PHP 错误等。
有人可以告诉我任何其他方式来调试东西而不是注释掉代码吗?或者某种获取错误代码的方法?
提前感谢您的帮助。
我正在为 Prestashop 开发一个 PHP 模块,我在尝试调试代码时遇到了困难。每当有东西掉下来时,它不会显示错误,只是一个空白页面 - 无论是在模块被钩住的前端,还是在后端模块页面上。
我正在尝试在另一个类或另一个函数中编写,但它根本不喜欢它。
它在本地开发服务器上,出现 PHP 错误等。
有人可以告诉我任何其他方式来调试东西而不是注释掉代码吗?或者某种获取错误代码的方法?
提前感谢您的帮助。
尝试打开config/config.inc.php
然后更改:
@ini_set('display_errors', 'off')
到
@ini_set('display_errors', 'on')
.
从 PS 1.5+ 开始,您需要打开config/defines.inc.php
并更改:
define('_PS_MODE_DEV_', false);
到
define('_PS_MODE_DEV_', true);
转到您的后台页面。
高级参数 -> 性能 -> 清理缓存(橡皮擦图标)
我必须做
aptitude install php5-mcrypt sudo aptitude install php5-mcrypt sudo service apache2 restart
未安装加密
看看这个以获得最终解决方案!
首先,您需要在您的网站上启用错误报告。
1) 打开文件 config\config.inc.php 并找到以下行:
@ini_set(‘display_errors’, ‘off’);
2) 将“off”更改为“on”,重新上传文件并刷新页面。
如果没有帮助,请转到下一步。
3) 将此代码添加到 PrestaShop 安装根目录中 index.php 文件的顶部,然后将其重新上传到您的服务器上。然后尝试访问您的网站和管理面板。
<?php error_reporting(0);
$old_error_handler = set_error_handler("userErrorHandler");
function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars)
{
$time=date("d M Y H:i:s");
// Get the error type from the error number
$errortype = array (1 => "Error",
2 => "Warning",
4 => "Parsing Error",
8 => "Notice",
16 => "Core Error",
32 => "Core Warning",
64 => "Compile Error",
128 => "Compile Warning",
256 => "User Error",
512 => "User Warning",
1024 => "User Notice");
$errlevel=$errortype[$errno];
//Write error to log file (CSV format)
$errfile=fopen("errors.csv","a");
fputs($errfile,"\"$time\",\"$filename:
$linenum\",\"($errlevel) $errmsg\"\r\n");
fclose($errfile);
if($errno!=2 && $errno!=8) {
//Terminate script if fatal error
die("A fatal error has occurred. Script execution has been aborted");
}
}
?>
完成此操作后,您将在 index.php 文件所在的文件夹中找到名为 errors.csv 的文件。使用任何文本编辑器下载并打开文件errors.csv,您将在那里找到错误日志。
就我而言(PS 1.7),我在大量添加许多产品后出现了空白屏幕。我还注意到它是一个带有错误 500 的空白屏幕(我从浏览器控制台得到它)。
解决方案是简单地增加我的 PHP 的内存限制。可以通过将此行添加到 index.php 文件的开头来完成:
ini_set('memory_limit', '512M');
我用512M解决了,但如果问题仍然存在,您可以尝试更多。
这只是一个临时/快速的解决方案,如果您希望它持久,您可以直接在源处更改该值,找到您php.ini
的值并编辑该memory_limit
字段上的值。
您可以在此处找到更多信息: https ://www.inmotionhosting.com/support/prestashop-16/blank-screen
I just renamed 'class_index.php' in /cache directory to something 'class.index.old.php', then reloaded site - and voila! site was loaded. And in this directory new 'class_index.php' was created.