Bug #55904
closedClass loader loads aliased classes twice
100%
Description
The class loader tries to load files of aliased classes twice if certain strange circumstances are met.
/srv/www/
and /var/www/
are mounts (not symlinks) of the same harddisk. TYPO3 is used via HTTP (Apache), document root /var/www/typo3/
. TYPO3 is also used on the CLI via document root /srv/www/typo3/
.
The class loading process is as follows:
- Apache: TYPO3 gets used, writes caches.
- CLI: TYPO3 core gets loaded,
/srv/.../GeneralUtility.php
is loaded. - Extension configuration gets loaded. Their paths are loaded from
/var/...
now because of the caches - An extension's
ext_localconf.php
usest3lib_div
, which is handed to the class loader. - Class loader sees it's an alias to
GeneralUtility
and tries to load that first. It calculates the path ofGeneralUtility
to be/var/.../GeneralUtility.php
and does arequire_once
call on it. - PHP loads this file because it does not know that
/srv/.../GeneralUtility.php
is the same file as/var/.../GeneralUtility.php
Fatal error: Cannot redeclare class TYPO3\CMS\Core\Utility\GeneralUtility
While this is an obscure configuration, the fix is easy: Simply check if the class already exists before requiring the file.
I'll contribute a patch.
This error did not happen with 6.2beta4 and started with 6.2beta5, probably because of 890cdbcf4013b2c870e315cce13400f44d3304b6 (bug #55559).
Updated by Gerrit Code Review over 10 years ago
- Status changed from New to Under Review
Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/27570
Updated by Christian Weiske over 10 years ago
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Applied in changeset 5fb6863ebff3f1e7a0aa1c75bb0148568e55a70a.
Updated by Riccardo De Contardi almost 7 years ago
- Status changed from Resolved to Closed