Einige Fehlermeldungen

Hallo,

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

Keine ne Idee?

fehler 2: zugriff verweigert wegen fehlender rechte (oder nicht vorhandene datei?)

fehler 1: / liegt nunmal wirklich nicht erlaubten apache pfaden

[QUOTE=caladan;143514]fehler 2: zugriff verweigert wegen fehlender rechte (oder nicht vorhandene datei?)

fehler 1: / liegt nunmal wirklich nicht erlaubten apache pfaden[/QUOTE]

zu 1. wie schalte ich das ab? bei anderen Shops geht es ja auch ohne diese meldung und alles ist bei all-inkl

die frage ist ja was genau da probiert wird aufzurufen?

ein “/” in einem pfad führt auf dem server ins root directory. da gehört egal was nicht hin.

also wäre interessant was genau da aufgerufen / abgespeichert werden soll und das anzupassen.

[QUOTE=caladan;143696]die frage ist ja was genau da probiert wird aufzurufen?

ein “/” in einem pfad führt auf dem server ins root directory. da gehört egal was nicht hin.

also wäre interessant was genau da aufgerufen / abgespeichert werden soll und das anzupassen.[/QUOTE]

wie ich schon sagte, ich rufe das das Diagnose Werzeug auf. Also nichts was ich selbst getan hätte.

Das selbe Problem habe ich zur Zeit auch mit all-inkl.

Ralf, hast du hierfür mittlerweile eine Lösung?

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 …