Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP unserialize():偏移量处出错_Php_Drupal_Serialization_Drupal 6 - Fatal编程技术网

PHP unserialize():偏移量处出错

PHP unserialize():偏移量处出错,php,drupal,serialization,drupal-6,Php,Drupal,Serialization,Drupal 6,我对Drupal 6.20有问题 可能是在PHP更新之后,站点停止工作。我得到: Notice: unserialize() [function.unserialize]: Error at offset 0 of 22765 bytes in /PATH/includes/cache.inc on line 33 这是一行: $cache->data = unserialize($cache->data); 如果有任何帮助,我将不胜感激。请尝试var\u转储($cache->d

我对Drupal 6.20有问题

可能是在PHP更新之后,站点停止工作。我得到:

Notice: unserialize() [function.unserialize]: Error at offset 0 of 22765 bytes in /PATH/includes/cache.inc on line 33
这是一行:

$cache->data = unserialize($cache->data);

如果有任何帮助,我将不胜感激。

请尝试
var\u转储($cache->data)
。这可能是因为PHP添加了转义序列和/或引号,这是由于magic quotes或类似的原因。

听起来您的Drupal缓存已经损坏

立即的解决办法是清除缓存。清除Drupal缓存的三种方法:

  • 使用管理员密码登录站点,然后从菜单中选择刷新缓存选项。这显然只有在你能进入网站的时候才有可能

  • 如果你不能做到这一点,你可以使用Drush命令行工具来刷新现金,而不必去网站

  • 如果您甚至无法让Drush工作(或者您只是不想安装它),您可以手动执行此操作,方法是转到您最喜欢的MySQL工具中的数据库,清空所有名称以“cache\ux”开头的表

  • 真正的问题是为什么会发生这种情况。遗憾的是,如果没有更多关于你的设置的信息,我无法回答这个问题(而且可能还要花一些时间调查)

    危险在于,即使清除了缓存,同样的错误也可能再次发生,因此,即使您确实让它重新工作,最好仔细研究一下,看看是否可以找到根本原因

    我猜可能是一个有bug的胭脂模块将坏数据写入缓存。您可能需要检查drupal站点和Google,以检查您正在使用的模块,看看是否有类似行为的报告


    另外,您还提到了一个PHP更新:请告诉我们您使用了哪些版本的PHP。PHP5.3中的一些Drupal6模块存在已知的问题,尽管内核确实支持它。有关更多信息,请参阅。

    当您在PostgreSQL 9.0上运行Drupal 6.x时,会出现此问题,因为bytea类型已被修改。
    这里有一些建议的解决方案:-(喜欢Wayback机器)

    在数据库上运行此操作将修复此问题:

    ALTER DATABASE databasename SET bytea_output='escape';
    

    这可能是因为阵列中的数据不正确,您可以这样修复它:

       $data= preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'",         $cache->data );
       $s_data= unserialize($data);
    

    我得到一个随机的字母/数字序列,用(它是一个很长的字符串):string(22765)“x613,它以:3b7d”结尾。据我所知,任何序列化数据都以“
    X:n
    ”形式开始(以
    }
    ”结尾),其中
    X
    是类型,
    n
    是长度。示例
    a:1
    i:123
    。显然,
    $cache->data
    值是完全错误的。你应该检查数据来自哪里。这是来自数据库吗?在升级过程中,序列化字符串中可能出现了一些附加字符。正如@Udo G所说,最好将
    var\u dump($cache->data)
    的结果发布到这里。请看:你所说的一切都做了,但没有起作用。每次单击链接之前,我都必须删除缓存,但在optins中,缓存被禁用。此外,还有许多与psql相关的错误。。。