Installation in Unterverzeichnis - includes Pfad
am 21.09.2008 - 17:59 Uhr in
Guten Abend,
Ich versuche drupal 6.5 lokal auf meinem openSuse 10.3 / apache2 in ein eigenes Unterverzeichnis zu installieren, bekomme aber beim ersten Aufruf des Websinstallers nur
Warning: include_once(includes/install.inc) [function.include-once]: failed to open stream: No such file or directory in /srv/www/htdocs/websites/drupal/includes/database.inc on line 129
und die zugehörigen Abbruchmeldungen.
Nach einigem gegugel habe ich in /srv/www/htdocs/websites/drupal/sites/default/settings.php
$base_url = 'http://http://localhost/websites/drupal'
eingefügt, ohne dass dies zu einer Änderung geführt hätte.
Die weiteren Suchergebnisse haben mich auf Seiten geführt, die erklärten, wie man mit rewrite ein Unterverzechnis als root-Verzeichnis aussehen lässt, aber das will ich nicht, weil ich die lokalen Arbeitskopien meiner anderen Sites ebenfalls in Unterverzeichnissen unterhalb /srv/www/htdocs liegen habe. Auch möchte ich keine Änderungen am .htaccess im root-Verzeichnis oder am php.ini vornehmen, weil ich die anderen (ebenf. php-)Sites nicht "stören" möchte.
mod-rewrite is on und läuft, auch .htaccess ist für das drupal-Verzeichnis erlaubt.
Was habe ich übersehen?
Vielen Dank für Tipps.
Daniel
- Anmelden oder Registrieren um Kommentare zu schreiben
Re: Installation in Unterverzeichnis - includes Pfad
am 21.09.2008 - 19:40 Uhr
Ich versuche drupal 6.5 ... zu installieren, ...
Nimm lieber Drupal 6.4, dann kannst du deine Zeitmaschine öfters in der Garage lassen :-)
Warning: include_once(includes/install.inc) [function.include-once]: failed to open stream: No such file or directory in /srv/www/htdocs/websites/drupal/includes/database.inc on line 129
Hast du nachgeschaut ob die Datei wirklich vorhanden ist? Vielleicht ist beim Entpacken ein Fehler aufgetreten. Du solltest auch sicherstellen, das der Benutzer, der den Webserver ausführt, die Datei lesen kann.
$base_url = 'http://http://localhost/websites/drupal'
Die URL hat keinen Einfluss darauf, wo PHP im Dateisystem nach einzubindenden Dateien sucht. Trotzdem solltest du einen korrekten Wert verwenden:
$base_url = 'http://localhost/websites/drupal';
mod-rewrite is on und läuft, auch .htaccess ist für das drupal-Verzeichnis erlaubt.
mod_rewrite hat ebenalls keinen Einfluss darauf, wo PHP im Dateisystem nach einzubindenden Dateien sucht.
--
Hallo Oswald Zitat: Nimm
am 22.09.2008 - 08:50 Uhr
Hallo Oswald
Nimm lieber Drupal 6.4
Ich denk ja gerne voraus, aber hier wars dann doch nur ein Tippfehler :-)
Warning: include_once(includes/install.inc) [function.include-once]: failed to open stream: No such file or directory in /srv/www/htdocs/websites/drupal/includes/database.inc on line 129
Hast du nachgeschaut ob die Datei wirklich vorhanden ist? Vielleicht ist beim Entpacken ein Fehler aufgetreten. Du solltest auch sicherstellen, das der Benutzer, der den Webserver ausführt, die Datei lesen kann.
Also install.inc ist vorhanden, allerdings im gleichen Verzeichnis wie database.inc. Auf Zeile 129 in databse.inc steht
include_once 'includes/install.inc';
und das würde ja m.E. nach /srv/www/htdocs/websites/drupal/includes/includes/ zeigen. Das includes Verzeichnis hat aber kein weiteres Unterverzeichnis.
???
Re: Hallo Oswald Zitat: Nimm
am 22.09.2008 - 10:29 Uhr
Auf Zeile 129 in databse.inc steht
include_once 'includes/install.inc';
und das würde ja m.E. nach /srv/www/htdocs/websites/drupal/includes/includes/ zeigen.
Relative Pfadangaben werden anhand der Einstellung von include_path in absolute Pfadangaben umgewandelt. Das aktuelle Verzeichnis (bezeichnet durch "." im include_path) bezieht sich dabei auf das Arbeitsverzeichis, wie es auch mit chdir gesetzt werden kann.
Beim Starten eines PHP-Scripts über einen Webserver ist das Arbeitsverzeichnis das Verzeichnis, in dem das Script liegt. In deinem Fall ist das Script wahrscheinlich
index.php
, das Arbeitsverzeichnis also das Wurzelverzeichnis von Drupal. Durch das Einbinden vonbootstrap.inc
ändert sich das Arbeitsverzeichnis nicht, wenn alsodb_set_active
aufgerufen wird, dann ist immer noch das Wurzelverzeichnis von Drupal das Arbeitsverzeichnis.--
Teufel's Küche = Arbeitsverzeichnis ändern
am 22.09.2008 - 10:57 Uhr
Durch das Einbinden von bootstrap.inc ändert sich das Arbeitsverzeichnis nicht, wenn also db_set_active aufgerufen wird, dann ist immer noch das Wurzelverzeichnis von Drupal das Arbeitsverzeichnis.
Korrekt.
Man sollte auch tunlichst vermeiden dieses Arbeitsverzeichnis zu ändern.wenn man nicht in Teufels Küche kommen will.
Oder man weiß sehr genau was man macht und begibt sich nach einer Änderung dieses Arbeitsverzeichnis (chdir) wieder in dieses.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Re: Relative Pfadangaben
am 22.09.2008 - 13:51 Uhr
Hm, also um ehrlich zu sein, verstehe ich nicht, was du mir damit sagen willst...
Ich habe einfach testweise das database.inc umbenannt und ein phpscript diesen Namens mit nichts weiter als
require('includes/eintest.inc');
an dessen Stelle eingefügt, sowie ein script namens eintest.inc das mir "Hallo" sagt. Dann wieder die index.php aufgerufen (also konkret
http://localhost/websites/drupal)
Mit dem Code wie oben bekomme ich die (von mir erwartete ) Fehlermeldung
Warning: require(includes/eintest.inc) [function.require]: failed to open stream: No such file or directory in /srv/www/htdocs/websites/drupal/includes/database.inc on line 2
Nehme ich die Pfadangabe weg (also
require('eintest.inc');)
wird mein Hallo angezeigt.Ich denke also nachwievor, dass das database.inc ein script aufrufen möchte, das wiederum in einem includes-Verzeichnis unterhalb seines eigenen liegt.
Nur wieso das so ist verstehe ich nicht...
PS: hier nochmal die ganzen "Original"-Fehlermeldungen:
Warning: include_once(includes/install.inc) [function.include-once]: failed to open stream: No such file or directory in /srv/www/htdocs/websites/drupal/includes/database.inc on line 129
Warning: include_once() [function.include]: Failed opening 'includes/install.inc' for inclusion (include_path='/srv/www/htdocs/websites/drupal/includes') in /srv/www/htdocs/websites/drupal/includes/database.inc on line 129
Fatal error: Call to undefined function install_goto() in /srv/www/htdocs/websites/drupal/includes/database.inc on line 130
Dein include_path ist falsch eingestellt.
am 22.09.2008 - 14:03 Uhr
Warning: include_once() [function.include]: Failed opening 'includes/install.inc' for inclusion (include_path='/srv/www/htdocs/websites/drupal/includes') in /srv/www/htdocs/websites/drupal/includes/database.inc on line 129
Der
include_path
ist falsch. Derinclude_path
sollte/srv/www/htdocs/websites/drupal
(oder einfach ".
") lauten. Hast du da irgendwo herumgeschraubt?--
Re: falscher include_path
am 22.09.2008 - 14:58 Uhr
Hallo Oswald
Danke. Es scheint jetzt zu funktionieren. Der include_path meiner php.ini war unverändert so wie er mit der openSuse-Installation gekommen war:
include_path = "/usr/share/php5"
. Das habe ich jetzt aufinclude_path = ".:/usr/share/php5"
geändert und jetzt erscheint die erste Installationsseite.OT-Frage:
Warum störte dieses offenbar fehlende ".:" meine anderen php-scripts nie - die hier lokal genau so laufen wie auf dem Server der Provider und ja auch unzählige include-Dateien benutzen?
Danke und Gruss
Daniel
danielba schrieb Warum
am 22.09.2008 - 22:27 Uhr
Warum störte dieses offenbar fehlende ".:" meine anderen php-scripts nie ...
Es gibt mehrere Möglichkeiten, sicherzustellen das einzubindende Dateien gefunden werden. Jede hat so seine Vor- und Nachteile, jedes PHP-Projekt löst es etwas anders.
Das '.' nicht im include_path ist habe ich allerdings noch nie gesehen. Welche Version von OpenSUSE ist das?
--
'.' nicht im include_path
am 23.09.2008 - 09:27 Uhr
Es ist openSuse 10.3.
Allerdings habe ich gerade in der Original-Datei nachgeschaut und da steht der Punkt tatsächlich drin. Ich hatte aber mein php.ini von einem anderen PC mit einer älteren Suse-Version hineinkopiert, und vielleicht (wahrscheinlich?) habe ich also vor Jahren aus irgeneinem Grund diesen Pfad doch selber verändert...
Jedenfalls funktioniert es nun ich ich danke nochmals für die Hilfe.
Daniel