Project

General

Profile

Actions

Bug #44017

closed

typo3/thumbs.php causes invalid autoloader cache

Added by Jonas Renggli over 11 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Must have
Assignee:
-
Category:
Backend API
Target version:
-
Start date:
2012-12-14
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
4.7
PHP Version:
Tags:
Complexity:
medium
Is Regression:
No
Sprint Focus:

Description

This bug is a little bit tricky, because it involves caching. Therefore the error shows up at other places, than where it's originated.

Symptom

Right part of the backend stays white. PHP-Error

PHP Fatal error:  require(): Failed opening required 'PATH_tslibclass.tslib_content.php' in /var/www/typo3_src/4.7.0/t3lib/class.t3lib_div.php on line 5061
After some minutes / hours the backend is usable again.
Backtrace
t3lib_div::requireFile() at /var/www/typo3_src/4.7.0/t3lib/class.t3lib_div.php : 5061
t3lib_autoloader::autoload() at /var/www/typo3_src/4.7.0/t3lib/class.t3lib_autoloader.php : 97
t3lib_autoloader::autoload()
spl_autoload_call()
ReflectionParameter::getConstructorArguments() at /var/www/typo3_src/4.7.0/typo3/sysext/extbase/Classes/Object/Container/ClassInfoFactory.php : 73
Tx_Extbase_Object_Container_ClassInfoFactory::buildClassInfoFromClassName() at /var/www/typo3_src/4.7.0/typo3/sysext/extbase/Classes/Object/Container/ClassInfoFactory.php : 47
Tx_Extbase_Object_Container_ClassInfoFactory::getClassInfo() at /var/www/typo3_src/4.7.0/typo3/sysext/extbase/Classes/Object/Container/Container.php : 344
Tx_Extbase_Object_Container_Container::getInstanceInternal() at /var/www/typo3_src/4.7.0/typo3/sysext/extbase/Classes/Object/Container/Container.php : 159
Tx_Extbase_Object_Container_Container::getInstance() at /var/www/typo3_src/4.7.0/typo3/sysext/extbase/Classes/Object/Container/Container.php : 120
Tx_Extbase_Object_Container_Container::get() at /var/www/typo3_src/4.7.0/typo3/sysext/extbase/Classes/Object/ObjectManager.php : 74
Tx_Extbase_Object_ObjectManager::__construct() at /var/www/vhosts/entb2012.ch/typo3conf/ext/flux/Classes/Backend/Preview.php : 76
Tx_Flux_Backend_Preview::makeInstance() at /var/www/typo3_src/4.7.0/t3lib/class.t3lib_div.php : 4847
t3lib_div::getUserObj() at /var/www/typo3_src/4.7.0/t3lib/class.t3lib_div.php : 4736
tx_cms_layout::tt_content_drawItem() at /var/www/typo3_src/4.7.0/typo3/sysext/cms/layout/class.tx_cms_layout.php : 1729
tx_cms_layout::getTable_tt_content() at /var/www/typo3_src/4.7.0/typo3/sysext/cms/layout/class.tx_cms_layout.php : 418
tx_cms_layout::getTable() at /var/www/typo3_src/4.7.0/typo3/sysext/cms/layout/class.tx_cms_layout.php : 118
tx_cms_layout::generateList() at /var/www/typo3_src/4.7.0/typo3/class.db_list.inc : 288
tx_cms_layout::renderListContent() at /var/www/typo3_src/4.7.0/typo3/sysext/cms/layout/db_layout.php : 1067
SC_db_layout::main() at /var/www/typo3_src/4.7.0/typo3/sysext/cms/layout/db_layout.php : 503
main() at /var/www/typo3_src/4.7.0/typo3/sysext/cms/layout/db_layout.php : 1361

Problem description

  • Autoloader caches a map for classnames to filenames in typo3temp/Cache/Code/cache_phpcode/... Content:
    <?php
    return array(
    ...
    'tslib_adminpanel' => 'PATH_tslibclass.tslib_adminpanel.php',
    'tslib_cobj' => 'PATH_tslibclass.tslib_content.php',
    'tslib_frameset' => 'PATH_tslibclass.tslib_frameset.php',
    'tslib_tableoffset' => 'PATH_tslibclass.tslib_tableoffset.php',
    'tslib_controltable' => 'PATH_tslibclass.tslib_controltable.php',
    'tslib_eidtools' => 'PATH_tslibclass.tslib_eidtools.php',
    'tslib_fe' => 'PATH_tslibclass.tslib_fe.php',
    'tslib_fecompression' => 'PATH_tslibclass.tslib_fecompression.php',
    'tslib_fetce' => 'PATH_tslibclass.tslib_fetce.php',
    ...
    
  • If the cache_phpcode is empty and typo3/thumbs.php is executed, a map with invalid filenames is generated, because PATH_tslib isn't defined and PHP uses the constant name as a value

Reproduce

  1. get the src url of a thumbnail in backend. e.g. typo3/thumbs.php?&file=%2Fvar%2Fwww%2Fvhosts%2Fmysite.ch%2Ffileadmin%2Ffiles%2Fpicture.png&size=56x42&md5sum=fbd1618afd&dummy=3543138413
  2. Clear cache_phpcode
    rm typo3temp/Cache/Code/cache_phpcode/*
    
  3. open url from 1.
  4. atuoloader cache file is generated in typo3temp/Cache/Code/cache_phpcode/ containing PATH_tslib as a string an backend doesn't work any more until cache is cleared.

Related issues 1 (0 open1 closed)

Related to TYPO3 Core - Bug #23285: PATH_site not defined in typo3/thumbs.phpClosed2010-07-28

Actions
Actions

Also available in: Atom PDF