Seite 1 von 1

include_once() Fehler bei pear Datei /HTML/Common.php

Verfasst: Di 14. Okt 2008, 00:45
von GaMbIt_
Hallo Leute,

ich hab nach der fehlerfreien Installation probleme mit dem Backend und vermutlich auch mit dem Frontend.
Das kann ich aber nicht bestätigen da ich Contenido ohne Beispielinhalte installiert hab.

Wenn ich auf die Backend Login Seite komme spuckt mir PHP eine etwas komische Fehlermeldung aus..

Code: Alles auswählen

Warning: include_once() [function.include-once]: Unable to access ./HTML/Common.php in /home/srv/webs/kunde/web/contenido/includes/api/functions.api.general.php on line 189
der include path sollte stimmen...

Code: Alles auswählen

.:..:/usr/share/php:/usr/share/pear
open_basedir :

Code: Alles auswählen

/home/srv/webs/kunde/:/tmp/
Ich habe keine Ahnung woran das liegen könnte...
die Ausgabe der includes aus /contenido/includes/api/functions.api.general.php gibt mir alle Pfade korrekt aus:

Code: Alles auswählen

/home/srv/webs/kunde/web/contenido/includes/cfg_sql.inc.php
/home/srv/webs/kunde/web/contenido/includes/functions.general.php
/home/srv/webs/kunde/web/conlib/prepend.php
/home/srv/webs/kunde/web/contenido/includes/functions.i18n.php
/home/srv/webs/kunde/web/contenido/classes/class.cec.php
/home/srv/webs/kunde/web/contenido/classes/class.cec_hook.php
/home/srv/webs/kunde/web/contenido/includes/config.chains.php
/home/srv/webs/kunde/web/contenido/includes/functions.i18n.php
/home/srv/webs/kunde/web/contenido/classes/class.xml.php
/home/srv/webs/kunde/web/contenido/classes/class.genericdb.php
/home/srv/webs/kunde/web/contenido/classes/class.properties.php
/home/srv/webs/kunde/web/contenido/classes/drivers/class.gdb.driver.php
/home/srv/webs/kunde/web/contenido/classes/class.security.php
/home/srv/webs/kunde/web/contenido/classes/class.genericdb.php
/home/srv/webs/kunde/web/contenido/classes/class.lang.php
/home/srv/webs/kunde/web/contenido/includes/functions.api.string.php
/home/srv/webs/kunde/web/contenido/includes/functions.api.images.php
/home/srv/webs/kunde/web/contenido/classes/class.navigation.php
/home/srv/webs/kunde/web/contenido/classes/class.template.php
/home/srv/webs/kunde/web/contenido/classes/class.backend.php
/home/srv/webs/kunde/web/contenido/includes/cfg_sql.inc.php
/home/srv/webs/kunde/web/contenido/includes/functions.i18n.php
/home/srv/webs/kunde/web/contenido/classes/class.table.php
/home/srv/webs/kunde/web/contenido/classes/class.notification.php
HTML/Common.php
/home/srv/webs/kunde/web/contenido/classes/class.htmlelements.php
/home/srv/webs/kunde/web/contenido/classes/class.ui.php
/home/srv/webs/kunde/web/contenido/classes/class.phpmailer.php
/home/srv/webs/kunde/web/contenido/classes/class.request.password.php
Irgendwie komm ich da nicht weiter ;)

Verfasst: Di 14. Okt 2008, 07:59
von MichFress
Müsste "/usr/share/pear" nicht auch im open_basedir drinstehen?

Verfasst: Di 14. Okt 2008, 11:36
von GaMbIt_
Sodele... ich bin ein Stückchen weiter...

und bei der functions.api.general.php angekommen...

in einer switch schleife steht da für den include von pear Dateien folgendes...

Code: Alles auswählen

      case "pear":
            $include = $what;
            $include_path = ini_get('include_path');
						
						


            if (!preg_match("|".$cfg['path']['pear']."|i", $include_path)) {
               // contenido pear path is not set in include_path

               // we try to add it via ini_set
               if (!@ini_set( 'include_path' , $include_path.PATH_SEPARATOR.$cfg['path']['pear'])) {
                  // not able to change include_path
                  trigger_error("Can't add {$cfg['path']['pear']} to include_path", E_USER_NOTICE);
                  $include = $cfg['path']['pear'] . $what; unset($where);
               } else {

                  $paths = explode(PATH_SEPARATOR, ini_get('include_path'));
                  $last = count($paths)-1;
                  if ($last >= 2) {
                     $tmp = $paths[1];
                     $paths[1] = $paths[$last];
                     $paths[$last] = $tmp;
                     ini_set( 'include_path' ,implode(PATH_SEPARATOR, $paths));
// GaMbIt DEBUG
//echo implode(PATH_SEPARATOR, $paths);
                  }
                  unset ($paths, $last, $tmp);

               }
            }
später wird einfach nur die $include eingebunden...

Ich wundere mich nur wieso nicht der gesamte Pfad in die $include geschrieben wird sondern nur der letzte Teil...

Verfasst: Di 14. Okt 2008, 12:54
von GaMbIt_
Nachtrag:

Ich habe die Pfade kontrolliert, bin zweimal durch die functions.api.general.php gerattert um einen Fehler oder ein falsche Config ausfindig zu machen und bin zum Schluss gekommen dass alles sauber funktioniert.

der include_path wird mit ini_set() korrekt erweitert...
Der include_once() Befehl sauber gefüttert...

Nachdem der SafeMode auf Off gestelt ist funktioniert der Zugriff wundersamerweise...

Das kanns doch nicht sein.. oder?