2009-04-28 3 views
2

Ich versuche, eine PHP-Site portiert von einem anderen Coder (wer ist nicht mehr in der Nähe) zu portieren, und ich habe ein Problem mit den Apache Rewrite Regeln, die eine Datei herunterladen auf dem Zielserver aufgefordert . Ich bin mir sicher, dass dies ein einfaches Problem ist, aber ich habe Schwierigkeiten, eine Antwort zu googeln. Ich laufe auf einem (dedizierten) Ubuntu Server mit einer Standardinstallation von Apache und PHP5 und portiere von einem gemeinsam genutzten Server, auf dem alles gut läuft. Während des Ports wurden keine Site-Dateien geändert.Apache Rewrite Regel zwingt Download

Die .htaccess-Datei enthält den Code (nur)

 
# Use PHP5 as default 
AddHandler application/x-httpd-php5 .php 
Options -Indexes FollowSymlinks 


RewriteEngine on 
RewriteRule ^html/(.*)  /index.php?init=site\/$1\/$2\/$3\/$4\/$5\/$6\/$7\/$8\/$9 

RewriteRule ^mykart$   /index.php?admin=true 
RewriteRule ^mykart/$  /index.php?admin=true 
RewriteRule ^mykart/(.*)$ /index.php?init=admin\/$1\/$2\/$3\/$4\/$5\/$6\/$7\/$8\/$9&admin=true 


Wenn ich versuche, die Datei zu öffnen http://www.mysite.com/html/#home der Browser des (index.php) Datei anstatt sie anzuzeigen, mit der Meldung zum Download versucht

"Sie haben zu öffnen gewählt [Dialog hier Leerzeichen zeigt]

welches ein: application/x-httpd-php aus .... "

Ich denke, ich muss etwas in der PHP-oder Apache-Konfiguration verpasst haben, aber was?

EDIT: Um zu verdeutlichen, der Server läuft Apache2 und hat mehrere, funktionierende, PHP-Sites auf ihm. Außerdem, wenn ich die .htaccess-Datei lösche und eine einfache phpinfo-Anzeigeseite ausführe, läuft alles gut, also ist es nicht die Ausführung von PHP per se.

+0

Dies ist wahrscheinlich nicht die Ursache Ihres Problems. Aber wenn Sie nur eine Gruppe in Ihrem Muster haben, könnten Sie nur eine Übereinstimmung haben und somit nur $ 1 (neben den $ 0 für das ganze Spiel) verwenden. Und Sie müssen dem '/' weder im Muster noch im Substitutionsteil entkommen. – Gumbo

+0

Oh, nur ein weiterer Gedanke: Ich hoffe, jemand kann keine Administratorrechte erlangen, indem er der URL nur 'admin = true' hinzufügt. – Gumbo

+0

Heh. Dies ist nur einer von einer Reihe von Websites, die ich übernommen habe und zu sagen, dass sie mit Problemen überschwemmt sind, ist eine Untertreibung. Admin hinzufügen würde nicht funktionieren, aber es gibt viele andere Löcher – Cruachan

Antwort

3

Ich nehme an, dass der MIME-Typ application/x-httpd-php5 nicht gültig ist. Ich habe es auf meinem lokalen Rechner versucht und es verursachte das gleiche Verhalten.

Haben Sie statt dessen application/x-httpd-php ausprobiert?

+0

Danke, ja, das scheint es zu lösen. Sehr geschätzt, ich habe begrenzte Erfahrung mit Apache (viel vertrauter mit PHP auf dem Windows-Stack) – Cruachan

0

Sieht aus wie ein Apache-Konfigurationsproblem, natürlich könnte ich mich irren. Haben Sie httpd.conf für die folgenden Zeilen geprüft:

# Add index.php to your DirectoryIndex line: 
DirectoryIndex index.html index.php 

AddType text/html  php 
0

Ich hatte ein ähnliches Problem. Der Browser versuchte, Links von der PHP-Website herunterzuladen, anstatt sie zu laden.

Es war nicht PHP-Interpreter-Problem für mich, es stellte sich heraus, verlegt werden .htaccess-Datei. Allerdings habe ich nicht bemerkt, dass das Deaktivieren der htaccess-Datei das Problem über Stunden durch den Cache des Browsers gelöst hat.

So, vergessen Sie nicht, Ihren Browser Caches zu löschen! Und starte Apache neu.