Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Установка (http://forum.typo3.ru/forumdisplay.php?f=13)
-   -   Перенос сайта с Windows на Unix (http://forum.typo3.ru/showthread.php?t=2630)

Ice 27.02.2007 16:45

PHP код:

$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8'.chr(10).'SET CHARACTER SET utf8'

collation везде utf8_general_ci

Ice 27.02.2007 16:59

Цитата:

Сообщение от void (Сообщение 10082)
Встречался именно с такой ошибкой при переходе с php4 на php5.
Причина была в том, что в таблице cache_hash содержались обрезанные данные, которые потом не могли быть правильно десериализованы.
Проверьте collation, покажите свою [SYS][setDBinit].

А причем тут переход с версии на версию? Я же кеш очищаю и он генерируется снова в новой версии... Пробовал запускать под PHP5 на том же сервере, та же ошибка.

void 27.02.2007 17:35

Не знаю... вообще странная ошибка. Зависит от многих факторов, видимо. У меня прошла после удаления нескольких экстеншенов.

Ice 28.02.2007 09:15

Ошибка найдена!
 
Нашёл ошибку!

В файле class.t3lib_page.php в функции storeHash вместо строки
PHP код:

$GLOBALS['TYPO3_DB']->exec_INSERTquery('cache_hash'$insertFields); 

нужно написать
PHP код:

$GLOBALS['TYPO3_DB']->exec_INSERTquery('cache_hash'$insertFields, array('content')); 


void 28.02.2007 14:25

Вы уверены, что поле content не нужно обрабатывать через quoteArray?
Если это действительно баг, то ему место на bugs.typo3.org...

Ice 28.02.2007 14:58

Похоже, что serialize уже заботится об этом. По крайней мере, у меня всё заработало и все страницы отображаются без ошибок. Так это наверное не ошибка TYPO3, а ошибка PHP, точнее функции mysql_real_escape_string().

Другое, более правильное, решение, наверное, было бы кодировать строку во что-нибудь, где нет кавычек и апострофов, например с помощью функций base64_encode/base64_decode:

Поменял строчки в class.t3lib_tstemplate.php:

PHP код:

$this->setup base64_decode(unserialize($setupData));        // Artyom Lukanin    added: base64_decode() 

и
PHP код:

t3lib_pageSelect::storeHash($hashbase64_encode(serialize($this->setup)), 'TS TEMPLATE');    // Artyom Lukanin added: base64_encode() 

Проверено, мин нет ;)

Ice 28.02.2007 15:12

Цитата:

Сообщение от void (Сообщение 10110)
Вы уверены, что поле content не нужно обрабатывать через quoteArray?
Если это действительно баг, то ему место на bugs.typo3.org...

Добавил баг на этот сайт


Часовой пояс GMT +4, время: 08:12.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot