OpenCart 3.0.2.0调试时echo、写日志等操作均无效,求解决方案
OpenCart 3.0.2.0 调试输出问题解决方案
问题1:echo/print在PHP代码、TPL模板中输出不生效
原因说明
OpenCart采用MVC架构,控制器执行阶段的输出会被后续的渲染逻辑覆盖,不会直接返回给浏览器,因此直接使用echo/print无法看到内容。
可行方案
- 输出到浏览器控制台
PHP代码中写法:
TPL模板中写法:echo "<script>console.log('调试内容:".json_encode($your_variable)."');</script>";
如果使用OpenCart 3.x默认的Twig模板,写法为:<script>console.log('调试内容:{$your_variable|json_encode}')</script><script>console.log('调试内容:{{ your_variable|json_encode }}')</script> - 临时中断输出调试
如果你需要在逻辑执行中途查看变量内容,可以输出后直接终止程序:echo '<pre>'; var_dump($your_variable); echo '</pre>'; exit;
问题2:日志写入无内容
原因说明
你提供的代码存在两处明显问题:一是字符串未闭合,二是单引号包裹的字符串中$var不会被解析,且自定义初始化的Log实例会生成独立的日志文件,不会写入默认的error.log。
可行方案
- 写入默认error.log
直接调用OpenCart全局的日志对象即可写入系统默认的error.log,路径为system/storage/logs/error.log:$var = 'this is a variable'; //其他代码逻辑 global $log; $log->write("Is \$var a null? Here is the value " . $var); - 自定义日志文件
如果你需要单独生成日志文件,写法如下,日志会生成在system/storage/logs/你的自定义文件名.log:$var = 'this is a variable'; //其他代码逻辑 $log = new Log('custom_debug.log'); $log->write("Is \$var a null? Here is the value " . $var);
额外检查项
- 确认
system/storage/logs/目录权限为755及以上,Web运行用户拥有该目录的写入权限 - 自定义日志请前往对应文件名的日志文件查看内容,不要只检查默认的error.log
内容的提问来源于stack exchange,提问作者Robbie Rao
相关产品推荐
相关产品推荐

