Bug #23641
closedUpdate to 4.4.3 breaks with templavoila 1.4.4
0%
Description
Not sure why and how this comes up now, but after updating from 4.4.2 to 4.4.3 the frontend says "TemplaVoila ERROR: Couldn't find a Data Structure set for table/row "pages:x". Please select a Data Structure and Template Object first."
After BE-Login the frontend and backend says:
Uncaught TYPO3 Exception
#1: PHP Catchable Fatal Error: Argument 1 passed to t3lib_TSparser_TSconfig::matching() must be an array, string given, called in /homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/t3lib/class.t3lib_tsparser_tsconfig.php on line 66 and defined in /homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/t3lib/class.t3lib_tsparser_tsconfig.php line 137
...
Maybe this bug report should be assigned to the templavoila project, but this seems to be a huge problem for a lot of installations.
Uncaught TYPO3 Exception
#1: PHP Catchable Fatal Error: Argument 1 passed to t3lib_TSparser_TSconfig::matching() must be an array, string given, called in /homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/t3lib/class.t3lib_tsparser_tsconfig.php on line 66 and defined in /homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/t3lib/class.t3lib_tsparser_tsconfig.php line 137
t3lib_error_Exception thrown in file
/homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/t3lib/error/class.t3lib_error_errorhandler.php in line 106.
6 t3lib_error_ErrorHandler::handleError(4096, "Argument 1 passed to t3lib_TSparser_TSconfig::matc…t3lib_tsparser_tsconfig.php on line 66 and defined", "/homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/t3lib/class.t3lib_tsparser_tsconfig.php", 137, array)
/homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/t3lib/class.t3lib_tsparser_tsconfig.php:
00135: * @return array The input array with matching sections filled into the "match" key
00136: */
00137: protected function matching(array $cc) {
00138: if (is_array($cc['sections'])) {
00139: /* @var $matchObj t3lib_matchCondition_backend */
5 t3lib_TSparser_TSconfig::matching("A:3:{s:8:"TSconfig";a:6:{s:8:"options.";a:5:{s:15:…:5:"match";a:0:{}}bb8acc0ddfaec182f3f60350e69b0f03")
/homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/t3lib/class.t3lib_tsparser_tsconfig.php:
00064: $storedMD5 = substr($cachedContent, -strlen($hash));
00065: $storedData['match'] = array();
00066: $storedData = $this->matching($storedData);
00067: $checkMD5 = md5(serialize($storedData));
00068:
4 t3lib_TSparser_TSconfig::parseTSconfig("# ***************************************?…ebug = 1
? enable.info = 1
? #enable.edit = 1
?}", "userTS")
/homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/t3lib/class.t3lib_userauthgroup.php:
01233: // Perform TS-Config parsing with condition matching
01234: $parseObj = t3lib_div::makeInstance('t3lib_TSparser_TSconfig');
01235: $res = $parseObj->parseTSconfig($this->userTS_text, 'userTS');
01236: if ($res) {
01237: $this->userTS = $res['TSconfig'];
3 t3lib_userAuthGroup::fetchGroupData()
/homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/t3lib/class.t3lib_beuserauth.php:
00209: }
00210: } else { // ...and if that's the case, call these functions
00211: $this->fetchGroupData(); // The groups are fetched and ready for permission checking in this initialization. Tables.php must be read before this because stuff like the modules has impact in this
00212: if ($this->checkLockToIP()) {
00213: if ($this->isUserAllowedToLogin()) {
2 t3lib_beUserAuth::backendCheckLogin()
/homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/typo3/init.php:
00425: $BE_USER->start(); // Object is initialized
00426: $BE_USER->checkCLIuser();
00427: $BE_USER->backendCheckLogin(); // Checking if there's a user logged in
00428:
00429: // Setting the web- and filemount global vars:
1 require("/homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/typo3/init.php")
/homepages/28/d100116655/htdocs/shared/typo3_src-4.4.3/typo3/index.php:
00061:
00062: define('TYPO3_PROCEED_IF_NO_USER', 1);
00063: require('init.php');
00064: require('template.php');
00065:
(issue imported from #M15846)
Files
Updated by Matthias Krappitz about 14 years ago
Ok, i took a further look into this and at least got the backend working again by quickly patching in class.t3lib_tsparser_tsconfig.php on line 66 adding the following dumb if because whyever one unserialize is not enough to convert the TSConfig from its serialised representation in the database:
...
if (!is_array($storedData)) {
$storedData = unserialize(unserialize($cachedContent));
}
$storedData = $this->matching($storedData);
$checkMD5 = md5(serialize($storedData));
Furthermore templavoila is still not working because as there is also internally some stuff not getting properly unserialised. See screenshot attached.
I did not dig very much deeper and got no full understanding what is going wroing wrong here exactly, but as everyhting is fine again when using the 4.4.2 core, I suppose it has to do with the core and not anything else. I hope I can point some of the core guys into the right direction with this report.
php version is 5.2.9 with Suhosin Patch 0.9.7. Is no one else having this kind of problem with 4.4.3? It looks kind of serious to me.
Updated by Steffen Gebert about 14 years ago
Can you please check the new TV version 1.5.0?
Updated by Matthias Krappitz about 14 years ago
Thx for the hint, but it does not change anything. Full backend access to the test-system where this occurs can be provided. I'm really asking myself why there is no one else having this problem, especially in a more or less blank TYPO3 installation with just tt_news, realurl, templavoila and pretty much nothing else in there.
Updated by Matthias Krappitz about 14 years ago
i now got rid of this problem but with a very strange phenomenon - I downgraded to 4.4.2, de-installled extension templavoila, updated to 4.4.4 and all is working fine, but even though I de-installed templavoila before, it was still installed and now is running fine. I got no clue how come.
Updated by Matthias Krappitz about 14 years ago
Now i finally found the explanation. There was a change in the caching framework, that made it necessary to replace the t3lib_cache_frontend_StringFrontend with t3lib_cache_frontend_VariableFrontend in the caching configuration settings in localconf.php.
All other stuff happening were just side effects - so close this issue, please. Anyway this was a pain in the ... to debug.