[BUGFIX] Avoid PHP warning when using Phar archive with open_basedir 87/57587/3
authorOliver Hader <oliver@typo3.org>
Fri, 13 Jul 2018 14:45:43 +0000 (16:45 +0200)
committerChristian Kuhn <lolli@schwarzbu.ch>
Fri, 13 Jul 2018 20:09:35 +0000 (22:09 +0200)
Including files from Phar archives (e.g. "phar://file.phar/autoload.php")
does not work properly with having PHP setting open_basedir defined. The
reason for that is, that TYPO3's custom PharStreamWrapper tries to find
the appropriate base Phar file using file_exists() calls internally. In
case those files are not part of the open_basedir restriction - which is
the case for everything prefixed with the "phar://" scheme - a PHP
warning is shown.

Resolves: #85547
Releases: master, 8.7, 7.6
Change-Id: I72fdd7f0c016c0a8b1ed56a82b6b4042cac4d930
Reviewed-on: https://review.typo3.org/57587
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
typo3/sysext/core/Classes/IO/PharStreamWrapper.php

index 0b53bdb..69ffdfb 100644 (file)
@@ -472,7 +472,7 @@ class PharStreamWrapper
 
         while (count($parts)) {
             $currentPath = implode('/', $parts);
-            if (file_exists($currentPath)) {
+            if (@file_exists($currentPath)) {
                 return $currentPath;
             }
             array_pop($parts);