drupal_render()中的非法字符串偏移'#children'

时间:2013-05-30 11:58:12

标签: drupal drupal-7 fullcalendar

从网站上看我的完整日历会引发错误:

  

警告:在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下运行不正常。

任何解决方案?

7 个答案:

答案 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-errorshttp://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)

模块commons_events中的

相关问题:,从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]);
+      }
     }
   }