Seite 1 von 1

php include mit absoluten verzeichnissen bzw. URL?

Verfasst: 21.07.2007, 02:16
von chrizz
tag allerseits,
ich versuche ne MySQL Verbindung aus ner datei herzustellen, die den MySQL Connect Befehl aus einer anderen Datei inkludiert.
Die mysql_connect liegt an einem festen Ort. Jedoch muss ich von unterschiedlichen Dateien in unterschiedlichen Ordner darauf zugreifen.

Bei include("https://www.domain.tld/mysql_conntect.inc.php") findet er die datei nicht und spuckt logischerweise nen Fehler bei der ersten mySQL Abfrage aus.

WEnn ich die Datei mit "/www/htdocs/test46378/test/mysql_connect_inc.php",
dann meckert er das der User wwwrun keine Zugriffsberechtigung auf die DB hat...allerdings wird der nirgendwo erwähnt und die daten in der mysql_connect sind auch gänzlich andere...

irgendwie glaube ich, dass es nur irgendwo nen kleiner denkfehler ist...

vielleicht kann mir ma jemand auf die sprünge helfen...;)

Danke!

Verfasst:
von

Verfasst: 21.07.2007, 02:43
von To-Bi-As
schon mal versucht mit include("/mysql_conntect.inc.php"), also ohne Filesystem und HTTP, also direkt aus dem httpdocs-Root herraus.

Gruß, Ingo

Verfasst: 21.07.2007, 10:46
von cren
To-Bi-As, in dem Fall wird aber nicht auf das httpdocs-Rootverzeichnis zugegriffen, sondern auf das Rootverzeichnis des Dateisystems.
Bei include("https://www.domain.tld/mysql_conntect.inc.php") findet er die datei nicht und spuckt logischerweise nen Fehler bei der ersten mySQL Abfrage aus.
Kann auch nicht klappen.
WEnn ich die Datei mit "/www/htdocs/test46378/test/mysql_connect_inc.php",
dann meckert er das der User wwwrun keine Zugriffsberechtigung auf die DB hat...allerdings wird der nirgendwo erwähnt und die daten in der mysql_connect sind auch gänzlich andere...
Sicher dass der Pfad stimmt? Sind die anderen Variablen in der Datei, die die mysql_connect-Datei inkluded, bekannt? Werden irgendwelche Variablen ggf. wieder von nem anderen Script überschrieben?

Verfasst: 21.07.2007, 10:49
von chrizz
ähm. sorry.....war gestern zu spät.....:(
Die mysql_conntect liegt nicht im root...die liegt auch in nem separaten Ordner...
/subordner/mysql_connect.php
/subordner/anderedatei.php ---> benötigt die mySQL_Connect
/subordner/Subsubordner/anderedatei.php ---> benötigt die mySQL_Connect

in den letzten beiden dateien ist nur eine Variable für den Pfad drin.
Derzeit noch als URL inkludiert. ICh bracuhe also nur eine Variable ändern und dann muss es für alles passen.... Dachte ja man könnte schön vom Root referenzieren, aber das klappt ja auch irgendwie nicht...
habs grad mal versucht mit:
/www/htdocs/test12498/test/ als variabler Pfad....da gibt es zwar keine Fehlermeldung, aber das inkludierte Script wird überhaupt nicht verarbeitet.....hm...
dann werd ich mir das nochmal anschauen müssen...jetzt macht er nach'm formular absenden gar nichts mehr...

schön, dass fertige scripte immer soviele Probleme bereiten...:(

Im Formular wird nen hidden input beim Absenden mit value 1 belegt.
<input type="hidden" name="letteritbid[]" value="1">

in dem Auswertungsscript dafür ist die Abfrage wiefolgt:
if(is_array($_POST['letteritbid']))

und da läufts immer ganz cool dran vorbei...;) Kann jemand damit was anfangen? so gut kann ich dann doch kein PHP, als dass ich wüsste, warum das nen is_array ist...

btw: vielleicht machts einiges einfacher: Das script, was ich versuche zum Laufen zu bringen ist LetterIt2. Backend läuft, mails werden auch gesendet....Nur das mit dem An & Abmelden klappt beim dem Newsletter noch nicht...

fettes danke...

Verfasst: 21.07.2007, 11:01
von cren
Oh wei... LetterIt... das ist doch von otterware.de oder?

Hab mit StatIt (auch von otterware.de) ähnliche Erfahrungen machen müssen. Das Problem dabei war, dass der Pfad, der als Variable angegeben wurde, nur unter ganz bestimmten Voraussetzungen funktioniert. Sobald man etwas von der "Norm" abweicht gehts nicht mehr. Genauer gesagt: sobald man mit eigenen Unterverzeichnissen arbeitet, deren Verzeichnisstruktur vom Programmierer so nicht bedacht wurden.

Das ganze ist darauf ausgelegt, dass der Pfad in der Variable ein relativer sein muss (da z. T. via Dateisystem genutzt und z. T. via URL).

Also, Vorschlag zur Lösung:

- den Pfad in der Variablen relativ lassen
- Datei mysql_connect.php in anderedatei.php inkludieren über include( dirname(__FILE__) . "/mysql_connect.php" );
- Datei mysql_connect.php in Subsubordner/anderedatei.php inkludieren über include( dirname(__FILE__) . "/../mysql_connect.php" );
...

Viel Erfolg :)

Verfasst: 21.07.2007, 11:16
von chrizz
hm. das mit dem inkludieren klappt jetzt mittlerweile...zumin lass ich mir am ende jeder inkludierten datei nochmal den dateinamen ausgeben und alle sachen, die inkludiert werden sollen, kommen auch an.
allerdings wird das formular nicht abgearbeitet beim absenden....ich meine, dass es gestern nacht irgendwann mal funktioniert hatte.....aber.....das war gestern nacht :(

EDIT: Es scheint zu gehen.....ich hatte noch ne andere URL Pfadangabe im formular.....nämlich die URL Ausgabeseite (die die LetterIt nutzen werden wissen was ich meine ;) )
und jetzt scheint es wirklich zu funktionieren....

cren: kennst du denn nen besseren Script, was die Möglichkeit bietet noch sachen wie Vorname/Nachname einzubinden? Mein Plan ist ja immernoch, dass ich das mit meinem ModX CMS verknüpfe....da gibts zwar nen eigenes Script (koops mailing list), aber das hat vorn und hinten nicht funktioniert...

ich danke euch erstma für die Hilfe....schönen samstach :)

Verfasst: 21.07.2007, 11:49
von cren
Hm sorry, ein anderes Script ist mir grad nicht bekannt.

Verfasst: 22.07.2007, 01:32
von To-Bi-As
@cren
To-Bi-As, in dem Fall wird aber nicht auf das httpdocs-Rootverzeichnis zugegriffen, sondern auf das Rootverzeichnis des Dateisystems.
Bist Du Dir da wirklich sicher?? Denn dann dürften meine Seiten alle nicht laufen. Filezugriff auf Systemebene ist für meinen Apache nicht erlaubt "base-restriction" und "allow_url_fopen" auch nicht.
Also ich mache das immer mit include("/ordner/mysql_conntect.inc.php") und da wird das httpdocs-Root plus dem Ordner verwendet, nicht das System-Root. (Suse 9.3, Apache 2, PHP4).

Gruß, Ingo