从网站上看我的完整日历会引发错误:
警告:在element_children()中为foreach()提供的参数无效(regel 6400 van C:\ Users \ Simon \ My Websites \ Xampp \ htdocs \ xxx \ includes \ common.inc)。
警告:drupal_render()中的非法字符串偏移'#children'(regel 5867 van C:\ Users \ Simon \ My Websites \ Xampp \ htdocs \ xxx \ includes \ common.inc)。
警告:drupal_render()中的非法字符串偏移'#children'(regel 5877 van C:\ Users \ Simon \ My Websites \ Xampp \ htdocs \ xxx \ includes \ common.inc)。
警告:drupal_render()中的非法字符串偏移'#children'(regel 5915 van C:\ Users \ Simon \ My Websites \ Xampp \ htdocs \ xxx \ includes \ common.inc)。
警告:drupal_render()中的非法字符串偏移'#printed'(regel 5922 van C:\ Users \ Simon \ My Websites \ Xampp \ htdocs \ xxx \ includes \ common.inc)。
我在某处读过它在PHP 5.4xx下运行不正常。
任何解决方案?
答案 0 :(得分:16)
更好的建议如下:
1)要在实时Drupal 7站点上隐藏用户的警告/错误/通知,请转到[SITE] / admin / config / development / logging并关闭错误显示。不要在您的设置文件中执行此操作,因为您将失去查找问题的能力。
2)进行一些调试通常是值得的。虽然确实可以安全地忽略警告和通知,但它们会减慢您的网站速度(参见Does php run faster without warnings?)。通常,错误是特定Drupal模块的已知问题的结果,并且drupal.org上可能发布了一个补丁来修复问题。这个特定(和常见)错误的来源可能难以追踪,但有关如何在此处执行此操作的有用讨论:http://fuseinteractive.ca/blog/put-your-children-their-place-drupal-debug-snippet
在您的情况下,它可能是日历模块中的一个错误(假设您正在使用它来生成日历),并且您可能希望查看那里的问题队列:https://drupal.org/project/issues/calendar?categories=1
答案 1 :(得分:3)
看起来您正在尝试渲染没有正确数组布局的元素。尝试使用debug_backtrace()
和debug_print_backtrace()
查找导致警告的代码。
此外,您还可以卸载模块,并查看错误消失的时间。请务必清除缓存,以确保不会受到任何愚弄。
您可以使用的其他命令是devel-module中的dd()
dpm()
krumo()
。
另请参阅:http://php.net/display-errors和http://php.net/display-startup-errors
大卫
答案 2 :(得分:3)
这是PHP / Drupal的一个已知问题。您看到的所有错误都是 not 错误,它们只是警告,可以非常安全地忽略。您只需要关注以Error: ....
开头的行。
要安全地忽略这些警告,请编辑您的drupal sites/default/settings.php
并添加以下行:
error_reporting(E_ALL & ~(E_STRICT|E_NOTICE|E_WARNING));
这也可以为潜在的其他插件解决同样的问题。
Drupal的推荐生产设置是完全禁用错误报告,这样您的用户就不会收到任何神秘的错误消息。对于生产Drupal站点,您必须执行以下操作:
error_reporting(0);
如果您需要在网站上看到错误,请改用nginx日志。
编辑:修复error_reporting,添加生产笔记
答案 3 :(得分:0)
我在Drupal 7.23和PHP 5.4中收到了大量类似的警告,特别是来自Panels。我刚刚在cPanel / PHP配置中将PHP版本从5.4更改为5.3(单个php.ini),所有这些警告和注释都消失了。
答案 4 :(得分:0)
是否有帮助我不知道, 但我有一个类似的错误信息,这是由于我改变了内容类型的机器名称.... 我恢复到之前的备份,其内容类型也被更改,删除它,使用预期名称重新创建它并且一切都很好
答案 5 :(得分:0)
相关问题:,从PHP 5.3迁移到5.4并在#1995834中修复了等效的错误消息:PHP 5.4在评论中屏幕显示事件页面错误的#13 强>
答案 6 :(得分:0)
将此补丁添加到common.inc帮助我解决了问题
diff --git a/includes/common.inc b/includes/common.inc
index c6303ef..e8f7e66 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -6007,7 +6007,9 @@ function drupal_render(&$elements) {
// for speed.
if ($elements['#children'] == '') {
foreach ($children as $key) {
- $elements['#children'] .= drupal_render($elements[$key]);
+ if (is_array($elements[$key])) {
+ $elements['#children'] .= drupal_render($elements[$key]);
+ }
}
}