bekomme in einigen Shops folgende Meldung im Diagnosewerkzeug:
Warning: disk_total_space(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (/www/htdocs/w00caea0/:/tmp:/usr/bin:/www/htdocs/w00caea0:/bin:/usr/local/bin:/usr/share/php) in /www/htdocs/w00caea0/application/models/oxdiagnostics.php on line 495
Und bei einen bekomme ich beim D3 Modul Check folgendes:
Fatal error: Uncaught exception 'UnexpectedValueException' with message 'RecursiveDirectoryIterator::__construct(/www/htdocs/w00bd063/logs): failed to open dir: Permission denied' in /www/htdocs/w00bd063/d3precheck.php:281 Stack trace: #0 /www/htdocs/w00bd063/d3precheck.php(281): RecursiveDirectoryIterator->__construct('/www/htdocs/w00...') #1 /www/htdocs/w00bd063/d3precheck.php(283): requCheck->_walkThroughDirs('/www/htdocs/w00...') #2 /www/htdocs/w00bd063/d3precheck.php(264): requCheck->_walkThroughDirs('.') #3 /www/htdocs/w00bd063/d3precheck.php(1070): requCheck->checkInSubDirs('hasFromToPhpVer...', Array) #4 /www/htdocs/w00bd063/d3precheck.php(1109): requTests->checkInSubDirs('hasFromToPhpVer...', Array) #5 /www/htdocs/w00bd063/d3precheck.php(505): requTests->hasFromToPhpVersion(Array) #6 /www/htdocs/w00bd063/d3precheck.php(246): requCheck->displayCheck('hasFromToPhpVer...', Array) #7 /www/htdocs/w00bd063/d3precheck.php(227): requCheck->_runThroughChecks(Array) #8 /www/htdocs/w00bd063/d3precheck.php(1390): requCheck-> in /www/htdocs/w00bd063/d3precheck.php on line 281
Hallo,
auch wenn scih das Problem inzwischen vermutlich erledigt hat, kurz eine Rückmeldung.
Wollte auch d3precheck.php ausführen, wurde aber mit ebenfalls abgebrochen. (D³ Heidelpay 4.0.6.0).
Das Problem tritt auf wenn z.B. auf dem Server open_basedir eingestellt ist. Da die Funktion _walkThroughDirs zwar beim check der Folder die Verzeichnisse . und … ausnimmt, nicht jedoch beim Filecheck, wird in der Rekursion versucht auf das Verzeichnis oberhalb der Webroot zuzugreifen, was dann scheitert.
Man kann das durch folgende Änderung ausschliessen
Änderung Zeile 273 ff:
/**
* @param $sFolder
*
* @return array
*/
protected function _walkThroughDirs($sFolder)
{
$aIgnoreDirItems = array('.', '..');
$aCheckScripts = array();
/** @var SplFileInfo $oFileInfo */
foreach (new RecursiveDirectoryIterator($sFolder) AS $oFileInfo) {
if (!in_array($oFileInfo->getFileName(), $aIgnoreDirItems) && $oFileInfo->isDir()) {
$aCheckScripts = array_merge($aCheckScripts, $this->_walkThroughDirs($oFileInfo->getRealPath()));
// auch hier kein check von . und ..
// } elseif ($oFileInfo->isFile()) {
} elseif (!in_array($oFileInfo->getFileName(), $aIgnoreDirItems) && $oFileInfo->isFile()) {
if (strtolower($oFileInfo->getFilename()) == $this->_sInFolderFileName) {
$aCheckScripts[] = str_replace('\\', '/', $oFileInfo->getRealPath());
}
}
}
return $aCheckScripts;
}
oder einen try / catch Block setzen um den Fehler abzufangen / anzuzeigen
Warum das Skript allerdings bei dem Check der php-Version u.a. durch alle Verzeichnisse läuft ist mir nicht klar geworden …