Automagisch Quelltext beim Aufruf von *.phps anzeigen
Mathias Brodala
- webserver
Hallo.
Da es hin und wieder überaus nützlich wäre, sich den Quelltext von PHP-Scripten anzeigen zu lassen und nicht immer und ohne großen Aufwand entsprechende Symlinks angelegt werden können, suchte ich nach einer Möglichkeit, dies zu vereinfachen.
Das Mittel der Wahl sollte hierbei natürlich mod_rewrite sein.
Doch weder das Beispiel zur RewriteRule-Direktive noch Martins Erweiterung nützen bei mir etwas. Es wird immer die Ausgabe des verarbeiteten PHP-Scriptes an Stelle des erwarteten Quelltextes angezeigt. Lege ich jedoch einen Symlink an, funktioniert es wie erwartet.
Lässt sich das ganze überhaupt bewerkstelligen?
Gruß, Mathias
Hi,
Doch weder das Beispiel zur RewriteRule-Direktive noch Martins Erweiterung nützen bei mir etwas.
bist Du sicher, dass Du mod_rewrite überhaupt (auf die Weise) verwenden kannst? Prüfe, ob die Konfigurationsdatei angezogen wird (z.B. durch Forcierung eines Internal Server Errors ;-)) und ob ein einfaches Rewriting durchgeführt wird.
Cheatah
Hallo Cheatah.
Doch weder das Beispiel zur RewriteRule-Direktive noch Martins Erweiterung nützen bei mir etwas.
bist Du sicher, dass Du mod_rewrite überhaupt (auf die Weise) verwenden kannst?
Ja, absolut.
Prüfe, ob die Konfigurationsdatei angezogen wird (z.B. durch Forcierung eines Internal Server Errors ;-))
Funktioniert.
und ob ein einfaches Rewriting durchgeführt wird.
Funktioniert ebenfalls anstandslos.
Einen schönen Dienstag noch.
Gruß, Mathias
Hi,
Da es hin und wieder überaus nützlich wäre, sich den Quelltext von PHP-Scripten anzeigen zu lassen und nicht immer und ohne großen Aufwand entsprechende Symlinks angelegt werden können, suchte ich nach einer Möglichkeit, dies zu vereinfachen.
Ist PHP als Modul installiert oder nicht?
Was passiert, wenn Du z.B. mal für .php per ForceType das application/x-httpd-php-source angibst?
Was sagt das Rewrite-Log?
cu,
Andreas
Hallo MudGuard.
Ist PHP als Modul installiert oder nicht?
Ja.
Was passiert, wenn Du z.B. mal für .php per ForceType das application/x-httpd-php-source angibst?
Dann wird mir der Quelltext angezeigt.
Was sagt das Rewrite-Log?
Folgendes:
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (3) [per-dir /www/dev.noctus.net/php/addmark/] strip per-dir prefix: /www/dev.noctus.net/php/addmark/addmark.phps -> addmark.phps
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (3) [per-dir /www/dev.noctus.net/php/addmark/] applying pattern '^(.+.php)s$' to uri 'addmark.phps'
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (2) [per-dir /www/dev.noctus.net/php/addmark/] rewrite addmark.phps -> addmark.php
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (3) [per-dir /www/dev.noctus.net/php/addmark/] add per-dir prefix: addmark.php -> /www/dev.noctus.net/php/addmark/addmark.php
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (2) [per-dir /www/dev.noctus.net/php/addmark/] remember /www/dev.noctus.net/php/addmark/addmark.php to have MIME-type 'application/x-httpd-php-source'
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (2) [per-dir /www/dev.noctus.net/php/addmark/] strip document_root prefix: /www/dev.noctus.net/php/addmark/addmark.php -> /php/addmark/addmark.php
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (1) [per-dir /www/dev.noctus.net/php/addmark/] internal redirect with /php/addmark/addmark.php [INTERNAL REDIRECT]
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8352a18/initial/redir#1] (3) [per-dir /www/dev.noctus.net/php/addmark/] strip per-dir prefix: /www/dev.noctus.net/php/addmark/addmark.php -> addmark.php
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8352a18/initial/redir#1] (3) [per-dir /www/dev.noctus.net/php/addmark/] applying pattern '^(.+.php)s$' to uri 'addmark.php'
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8352a18/initial/redir#1] (1) [per-dir /www/dev.noctus.net/php/addmark/] pass through /www/dev.noctus.net/php/addmark/addmark.php
Einen schönen Dienstag noch.
Gruß, Mathias
Hi,
Hallo MudGuard.
Ist PHP als Modul installiert oder nicht?
Ja.
Was passiert, wenn Du z.B. mal für .php per ForceType das application/x-httpd-php-source angibst?
Dann wird mir der Quelltext angezeigt.
Ok, grundsätzlich funktioniert also die Quelltextanzeige, das ist schon mal nicht schlecht.
Was sagt das Rewrite-Log?
Folgendes:
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (3) [per-dir /www/dev.noctus.net/php/addmark/] strip per-dir prefix: /www/dev.noctus.net/php/addmark/addmark.phps -> addmark.phps
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (3) [per-dir /www/dev.noctus.net/php/addmark/] applying pattern '^(.+.php)s$' to uri 'addmark.phps'
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (2) [per-dir /www/dev.noctus.net/php/addmark/] rewrite addmark.phps -> addmark.php
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (3) [per-dir /www/dev.noctus.net/php/addmark/] add per-dir prefix: addmark.php -> /www/dev.noctus.net/php/addmark/addmark.php
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (2) [per-dir /www/dev.noctus.net/php/addmark/] remember /www/dev.noctus.net/php/addmark/addmark.php to have MIME-type 'application/x-httpd-php-source'
127.0.0.1 - - [12/Sep/2006:14:22:12 +0200] [dev/sid#816c2a8][rid#8348460/initial] (2) [per-dir /www/dev.noctus.net/php/addmark/] strip document_root prefix: /www/dev.noctus.net/php/addmark/addmark.php -> /php/addmark/addmark.php
Der macht also nach dem phps -> php rewrite noch weiter.
Hast Du mal probiert, das L-Flag zu setzen?
cu,
Andreas
Hallo MudGuard.
Hast Du mal probiert, das L-Flag zu setzen?
Ja; ob mit oder ohne, das Resultat (die Rewrite-Vorgänge im RewriteLog) ist immer identisch.
Einen schönen Dienstag noch.
Gruß, Mathias
hi,
Hast Du mal probiert, das L-Flag zu setzen?
Ja; ob mit oder ohne, das Resultat (die Rewrite-Vorgänge im RewriteLog) ist immer identisch.
Und wenn du mal NS - not for internal subrequests - zusätzlich setzt?
http://www.faqts.com/knowledge_base/view.phtml/aid/1698
Hier wird auch noch das Flag PT - pass through to next handler - zusätzlich benutzt, klappt es vielleicht damit?
gruß,
wahsaga
Hallo wahsaga.
Hast Du mal probiert, das L-Flag zu setzen?
Ja; ob mit oder ohne, das Resultat (die Rewrite-Vorgänge im RewriteLog) ist immer identisch.
Und wenn du mal NS - not for internal subrequests - zusätzlich setzt?
http://www.faqts.com/knowledge_base/view.phtml/aid/1698
Hier wird auch noch das Flag PT - pass through to next handler - zusätzlich benutzt, klappt es vielleicht damit?
Diese Seite hatte ich auch schon gefunden, aber keines der zusätzlichen Flags zeigt eine Wirkung.
(PHP als CGI laufen zu lassen ändert übrigens auch nichts.)
Einen schönen Dienstag noch.
Gruß, Mathias
hi,
Diese Seite hatte ich auch schon gefunden, aber keines der zusätzlichen Flags zeigt eine Wirkung.
(PHP als CGI laufen zu lassen ändert übrigens auch nichts.)
Hm, dann wäre es als Workaround vielleicht erst mal praktikabel, .phps-Anfragen auf ein Script zu leiten, welches dann die Datei ohne s am Ende einzulesen versucht, und mit highlight_string() ausgibt.
gruß,
wahsaga
Hallo wahsaga.
Diese Seite hatte ich auch schon gefunden, aber keines der zusätzlichen Flags zeigt eine Wirkung.
(PHP als CGI laufen zu lassen ändert übrigens auch nichts.)
Hm, dann wäre es als Workaround vielleicht erst mal praktikabel, .phps-Anfragen auf ein Script zu leiten, welches dann die Datei ohne s am Ende einzulesen versucht, und mit highlight_string() ausgibt.
Ja, das ist wohl momentan die einige Lösung.
Hier das Script, falls es irgendwann einmal jemand brauchen sollte:
error_reporting(E_ALL);
header('content-type: text/html; charset=utf-8');
$str_phps = getenv('REDIRECT_URL');
$str_php = $_SERVER['DOCUMENT_ROOT'] . substr($str_phps, 0, -1); # phps → php
if (is_file($str_php)) {
highlight_file($str_php);
}
Anwendung:
RewriteRule ^(.+\.php)s$ /pfad/zu/obigem/script.php
Einen schönen Dienstag noch.
Gruß, Mathias
Hallo nochmal.
Anwendung:
RewriteRule ^(.+\.php)s$ /pfad/zu/obigem/script.php
Da ich die Backreference sowieso nicht verwende, besser so:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f # Nichts machen, falls *.phps doch als Datei vorliegt
RewriteRule ^.+\.phps$ /pfad/zu/besagtem/script.php
Einen schönen Dienstag noch.
Gruß, Mathias
Tach.
Was sagt das Rewrite-Log?
Folgendes: [...]
So sieht das bei mir auch aus. Auch die zusätzlichen Flags ändern nichts daran, daß im zweiten Durchlauf der MIME-Type anscheinend wieder vergessen und letztlich die Datei doch wieder als PHP-Skript verarbeitet wird.
Allerdings habe ich festgestellt, daß die ganze Geschichte funktioniert, wenn man die rewrite rule direkt in die httpd.conf einträgt (im Gegensatz zu einer .htaccess für das entsprechende Verzeichnis). Mit dieser Erkenntnis fand ich dann Bug #36590 im Apache Bugtracker...
Hallo Blaubart.
Allerdings habe ich festgestellt, daß die ganze Geschichte funktioniert, wenn man die rewrite rule direkt in die httpd.conf einträgt (im Gegensatz zu einer .htaccess für das entsprechende Verzeichnis).
Bei mir zeigt auch dies keine Wirkung. Das RewriteLog ist identisch und das verarbeitete PHP-Script wird ausgeliefert.
Einen schönen Dienstag noch.
Gruß, Mathias
Hallo nochmal.
Allerdings habe ich festgestellt, daß die ganze Geschichte funktioniert, wenn man die rewrite rule direkt in die httpd.conf einträgt (im Gegensatz zu einer .htaccess für das entsprechende Verzeichnis).
Bei mir zeigt auch dies keine Wirkung.
Kommando zurück, es funktioniert. Allerdings nur im VirtualHost-Container selbst, nicht in einem Directory- und auch nicht in einem Location-Container.
Einen schönen Dienstag noch.
Gruß, Mathias
Hi Mathias,
Das Mittel der Wahl sollte hierbei natürlich mod_rewrite sein.
Warum? Wenn PHP als Modul läuft setze für den entsprechenden Ordner doch mal ein
AddType application/x-httpd-php-source .php
und schaue ob es was wirkt ;-)
MfG, Dennis.
Hallo Dennis.
Das Mittel der Wahl sollte hierbei natürlich mod_rewrite sein.
Warum? Wenn PHP als Modul läuft setze für den entsprechenden Ordner doch mal ein
AddType application/x-httpd-php-source .php
und schaue ob es was wirkt ;-)
Dann sind die PHP-Scripte aber nicht mehr normal aufrufbar …
Einen schönen Dienstag noch.
Gruß, Mathias
Hi Mathias,
Dann sind die PHP-Scripte aber nicht mehr normal aufrufbar …
Ah, ok - mir war nicht klar, dass dies als Bedingung gefordert war.
Ich würde dem aber eh mit etwas Respekt gegenüber stehen - aktuell auf dem Server laufende und aufrufbare Scripte würde ich nicht spaßeshalber veröffentlichen, zumindest nicht in einem öffentlich zugänglichen Bereich. Zumal Scripte ja auch sensible Informationen enthalten können.
MfG, Dennis.
Hallo Dennis.
Ich würde dem aber eh mit etwas Respekt gegenüber stehen - aktuell auf dem Server laufende und aufrufbare Scripte würde ich nicht spaßeshalber veröffentlichen, zumindest nicht in einem öffentlich zugänglichen Bereich. Zumal Scripte ja auch sensible Informationen enthalten können.
Ja, habe ich alles bedacht. Diese Möglichkeit soll lediglich einen einfachen Weg darstellen, Quelltexte einzusehen. Sensible Daten und werden hier nirgends abgesichert.
Einen schönen Mittwoch noch.
Gruß, Mathias