Frage an die PHP-Experten...

Multimedia pur!
Antworten
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Beowulf hat geschrieben:Was genau klappt denn nicht?
Naja. Sobald ich diese Zeile in die htaccess einfüge "deny from all" klappt der Aufruf der Bilder nicht mehr. Sieht also stark danach aus, dass dann nicht mehr auf das Verzeichnis zugegriffen werden kann. Auch nicht mehr über das PHP-Bilder-Lade-Script
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Dies ist seltsam. Aber das Script selber liegt ja in einem anderen Verzeichnis, oder? Wäre gut, wenn du mal eine Übersicht der Verzeichnisse hier reinstellen könntest.
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Das sieht bei mir so aus:

root -> htaccess, die nur bestimmte Nutzer reinlässt
root\alben\ -> htaccess, wie hier im Thread besprochen
root\system\ da liegt die bildload.php
root\scripte\*.php -> da liegen die diversen phps, in denen dann die Aufrufe der Bilder drinstehen
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Verstehe. Wie sieht denn die htaccess vom Root-Verzeichnis aus? Und gewöhne dir bitte, bitte auch mal an, Fehlermeldungen anzugeben! ;) Wenn der Aufruf der Bilder nicht klappt, muss das PHP-Script bildload.php ja schließlich Fehlermeldungen ausspucken, oder? Auch kann das Lesen dieser Meldungen auch dir allein schon stark weiterhelfen.
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Das Script scheint ja gar nicht erst ausgeführt zu werden. Demnach gibts auch keine PHP-Fehlermeldung.

Die htaccess in der Root sieht so aus:

Code: Alles auswählen

<IfModule mod_php.c>
		php_value display_errors 1
</IfModule>

<IfModule mod_rewrite.c>
	RewriteEngine on
	RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>

ErrorDocument 401 /index.php
ErrorDocument 400 /index.php
ErrorDocument 403 /index.php
ErrorDocument 500 /index.php
ErrorDocument 404 /index.php

<Files index.php>
satisfy any
</Files>

<Files *.css>
satisfy any
</Files>

<Files *.*>
require valid-user
</Files>

AuthName "Benutzeranmeldung:"
AuthType Basic
AuthGroupFile /pfad/.htgroups
AuthUserFile /pfad/.htusers
Wenn ich mit der kompletten htacces im Albenordner allerdings mal direkt die bildload.php im Browser aufrufe, ("http://domain.de/system/bildload.php?bi ... 000003.jpg"), dann zeigt er das Bild an. Kann man das noch erklären? Das scheint ja dann so, dass das Linkumbiegen mit der Deny-Option dann irgendwie nicht mehr richtig funktioniert.
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Danke erstmal für die Infos! :)
Fightmeyer hat geschrieben:Wenn ich mit der kompletten htacces im Albenordner allerdings mal direkt die bildload.php im Browser aufrufe, ("http://domain.de/system/bildload.php?bi ... 000003.jpg"), dann zeigt er das Bild an. Kann man das noch erklären?
Dies ist eigentlich so, wie es sein sollte. Nur dass die Anzeige in deiner PHP-Seite nicht funktioniert, ist sehr verwunderlich. Sind die Image-Tags vielleicht nicht korrekt? Vielleicht irgendein Tippfehler oder so. Oder aktualisier einfach mal die Seiten, vielleicht schwirrt da was falsches im Cache rum.
Wenn du da nichts findest, wäre der Code der bildload.php für mich vielleicht hilfreich. Ich kann mir einfach nicht vorstellen, das eine htaccess-Datei in "alben" eine Auswirkung auf Links zum Verzeichnis "system" hat.
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Also meine Bildload.PHP ist bisher recht rudimentär:

Code: Alles auswählen

<?php
   $datei=fopen($_GET['bild'],r);
   echo fread($datei,1500000);
   fclose($datei);
?>
Wie gesagt: Ohne "deny from all" in der Albenordner-htaccess klappt das auch tadellos. Und wenn ich die bildload.php direkt verwende ja auch.

Für mich scheint es so, dass durch den Eintrag "deny from all", auch die ReWriterule außer Kraft gesetzt wird. Das würde zumindest dieses Verhalten erklären.

Nochmal zur Verdeutlichung: Das "deny from all" steh in der gleichen htaccess, wie auch die Rewriterule und die liegt im Albenorder.

EDIT: Ich hab das ürbigens mal ebend mit nem frisch aufgesetzem Xampp auf meinem lokalen Rechner getestet. Genau das gleiche Verhalten.
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Fightmeyer hat geschrieben:Für mich scheint es so, dass durch den Eintrag "deny from all", auch die ReWriterule außer Kraft gesetzt wird. Das würde zumindest dieses Verhalten erklären.
Nein, denn dann würde auch der direkte Aufruf über die Adressleiste des Browsers nicht funktionieren.
Wie wirkt sich denn das "Nichtanzeigenkönnen" genau aus? Sind die Bilder einfach nur nicht da, der Rest der Seite schon?

Ich habe eher die Vermutung, dass die RewriteRule überhaupt nicht greift, und du mit den Scripten direkt auf die Bilder zugreifst. Dies kannst du testen, indem du das echo fread.... in der bildload.php bei deaktivierter htaccess auskommentierst.
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Beowulf hat geschrieben: Wie wirkt sich denn das "Nichtanzeigenkönnen" genau aus? Sind die Bilder einfach nur nicht da, der Rest der Seite schon?
Ja genau so. Es wird dieses Browser-Standardymbol angezeigt für "broken Picture". Der Rest der Seite wird ganz normal gerendert.
Beowulf hat geschrieben: Ich habe eher die Vermutung, dass die RewriteRule überhaupt nicht greift, und du mit den Scripten direkt auf die Bilder zugreifst. Dies kannst du testen, indem du das echo fread.... in der bildload.php bei deaktivierter htaccess auskommentierst.
Stimmt. Dem ist tatsächlich so. Was könnte denn jetzt noch die Ursache dafür sein?
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Ok, fühlen wir dem Ganzen noch mal etwas genauer auf dem Zahn, könnte ja alles an einem einfachen Tippfehler liegen:
Stell noch mal die htaccess mit der RewriteRule möglichst komplett hier rein und gib das Verzeichnis an in dem sie abgespeichert ist, dann mal ein typischen Image-Tag aus der PHP-Datei und auch deren Verzeichnis.
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Beowulf hat geschrieben: Stell noch mal die htaccess mit der RewriteRule möglichst komplett hier rein

Code: Alles auswählen

RewriteEngine on
RewriteRule   ^\.\./alben/((\w+/)*\w+\.(jpg|gif|png))$  ../system/bildload.php?bild=../alben/$1

deny from all
Beowulf hat geschrieben: und gib das Verzeichnis an in dem sie abgespeichert ist,
www.meinedomain.de/alben
Beowulf hat geschrieben: dann mal ein typischen Image-Tag aus der PHP-Datei und auch deren Verzeichnis.
<img src="/../alben/9/thumbs/th_cimg3350.jpg">

Liegt unter www.meinedomain.de/scripte
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Ok, hier mein Änderungsvorschlag:
Die RewriteRule liegt für mein Verständnis im falschen Verzeichnis. Ich würde sie ins Root-Verzeichnis packen. Denn ich kann mir gut vorstellen, dass eine htaccess, die in einem Verzeichnis liegt auf das man nicht zugreifen darf, nicht aktiv ist.
Auch ist die RewriteRule für dieses Verzeichnis nicht korrekt, denn das Verzeichnis wird ja nicht über alben/../alben angesprochen, sondern direkt. Folgender reguläre Ausdruck wäre demnach korrekt gewesen:

Code: Alles auswählen

RewriteEngine on
RewriteRule   ^((\w+/)*\w+\.(jpg|gif|png))$  ../system/bildload.php?bild=../alben/$1
Aber ich würde stattdessen einfach vorschlagen, die RewriteRule ins Root zu packen:

Code: Alles auswählen

RewriteEngine on
RewriteRule   ^alben/((\w+/)*\w+\.(jpg|gif|png))$  system/bildload.php?bild=../alben/$1
Dann bleibt nur das im alben-Verzeichnis übrig:

Code: Alles auswählen

deny from all
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Habs gerade ausprobiert. Klappt leider auch nicht. Die Bilder werden als "broken" angezeigt. Die Rewriterule scheint also nach wie vor nicht zu greifen. Es ist echt zum Verzweifeln.
Hast Du noch ne Idee, was man noch machen könnte?

Wenn das alles nicht klappt, dann werd ich die links im Quelltext "hart" auf die bildload.php umkodieren. Dann gehts halt nicht anders.

P.S. Danke für Deine Geduld Beowulf...
Beowulf

Re: Frage an die PHP-Experten...

Beitrag von Beowulf »

Kein Problem! :)
Es wäre mal auszutesten, ob die RewriteEngine überhaupt aktiv ist. Schreib mal folgendes in die htaccess vom Root:

Code: Alles auswählen

RewriteEngine on
RewriteRule   ^test\.html$  index.php
Hier wird test.html auf index.php umgeleitet. Die test.html sollte keine existierende Datei sein, die index.php schon. Sollte keine index.php bei dir existieren, nimm einfach den Namen irgendeiner anderen existierenden Datei. Willst du jetzt auf http://www.meinedomain.de/test.html zugreifen, müsste die Indexseite aufgerufen werden. Wenn nicht, dann haben wir ein Problem! :roll:
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Re: Frage an die PHP-Experten...

Beitrag von Fightmeyer »

Also das hat funktioniert. Grundsätzlich scheint die Umleitung also zu klappen. Dann ist vielleicht doch noch irgendein Fehler in der ReWriteRule vorhanden...
Antworten