5

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

警告:为 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 下运行不佳。

任何人的解决方案?

4

7 回答 7

17

更好的建议如下:

1) 要在实时 Drupal 7 站点上向用户隐藏警告/错误/通知,请转到 [SITE]/admin/config/development/logging 并关闭错误显示。不要在您的设置文件中执行此操作,否则您将失去查找问题的能力。

2) 做一些调试通常是值得的。虽然确实,作为一般问题,警告和通知可以安全地忽略,但它们会减慢您的网站速度(请参阅php 在没有警告的情况下运行得更快吗?)。该错误通常是由特定 Drupal 模块的已知问题引起的,并且可能在 drupal.org 上发布了修复该问题的补丁。这个特定(和常见)错误的来源可能很难追踪,但这里有一个关于如何做到这一点的有用讨论:http: //fuseinteractive.ca/blog/put-your-children-their-place-drupal -调试片段

在您的情况下,这可能是日历模块中的错误(假设这是您用来生成日历的内容),您可能想查看那里的问题队列:https ://drupal.org/project/issues/日历?类别=1

于 2014-03-02T20:06:21.977 回答
4

这是 PHP/Drupal 的一个已知问题。您看到的所有错误都不是错误,它们只是警告,可以非常安全地忽略。您只需要关注以 . 开头的行Error: ....

要安全地忽略这些警告,请编辑您的 drupalsites/default/settings.php并添加以下行:

error_reporting(E_ALL & ~(E_STRICT|E_NOTICE|E_WARNING));

这也将为潜在的其他插件解决相同的问题。

Drupal 的推荐生产设置是完全禁用错误报告,这样您的用户就不会收到任何神秘的错误消息。对于生产 Drupal 站点,您必须执行以下操作:

error_reporting(0);

如果您需要查看网站中的错误,请改用 nginx 日志。

编辑:修复error_reporting,添加生产说明

于 2013-06-09T07:52:32.150 回答
3

看起来您正在尝试渲染没有正确数组布局的元素。尝试使用debug_backtrace()debug_print_backtrace()找到导致警告的代码。

此外,您还可以卸载模块并查看错误何时消失。请务必清除您的缓存,以确保您不会被任何事情所迷惑。

您可以使用的其他命令dd() dpm() krumo()来自开发模块。

另请查看: http: //php.net/display-errorshttp://php.net/display-startup-errors

大卫

于 2013-06-02T13:43:39.523 回答
1

将此补丁添加到 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]);
+      }
     }
   }
于 2019-05-09T10:27:35.240 回答
0

在 Drupal 7.23 和 PHP 5.4 中,我收到了大量类似的警告,尤其是来自 Panels。我刚刚在 cPanel/PHP Config 中将 PHP 版本从 5.4 更改为 5.3(单个 php.ini),所有这些警告和注释都消失了。

于 2013-10-02T00:17:14.727 回答
0

是否有帮助我不知道,但我有一个类似的错误消息,这是由于我更改了内容类型的机器名称....我恢复到以前的备份,其中内容类型也改变了,删除它,用预期的名称重新创建它,一切都很好

于 2015-03-09T12:12:15.163 回答
0

相关问题:在模块 commons_events 中,从 PHP 5.3 迁移到 5.4 触发了等效的错误消息,并在#1995834中修复:PHP 5.4 Attend an Event page errors to screen in comment #13

于 2018-02-21T07:45:28.360 回答