2010-08-18 8 views
6

Dies hat mich verrückt gemacht. Ich kann nicht scheinen, dass die RewriteMap-Direktive für ein PHP-Skript unter Windows funktioniert. Hier ist der relevante Ausschnitt aus meiner httpd.conf:Apache mod_rewrite: RewriteMap-Anweisung mit PHP-Skript auf Windows-Maschine

<IfModule mod_rewrite.c> 
     RewriteEngine on 
     RewriteMap router "prg:C:/dev/web/www/routing.php" 
     RewriteRule (.*) ${router:$1} 
</IfModule> 

Meine einfache PHP-Skript liest sich wie folgt:

#!C:\Program Files\PHP5.3.2\php-win.exe 
<?php 

set_time_limit(0); # forever program! 
$keyboard = fopen("php://stdin","r"); 
while (1) { 
     $line = trim(fgets($keyboard)); 
     echo "/sandbox.php?url=$line"; 
     echo "\n"; 
} 
?> 

Wenn ich versuche zu starten Apache ich die folgende Zeile in meinem Fehlerprotokoll erhalten:

[Fehler] (OS 193)% 1 ist keine gültige Win32-Anwendung. : Mod_rewrite: konnte nicht RewriteMap Programm C starten: /dev/web/www/routing.php Konfiguration

fehlgeschlagen

The apache documentation auf die 'magic cookie Trick' bezieht sich (unter dem 'Externe Rewriting Programm' Überschrift) Dies sollte die erste Zeile des Skripts sein, die auf den Interpreter zeigen soll. Gehe ich hier falsch oder muss ich die RewriteMap-Anweisung anders aufrufen?

Antwort

6

Ich bezweifle, dass der magische Cookie-Trick unter Windows funktionieren würde. Dies ist eine UNIX/Linux-Funktion.

Sie werden das PHP-Interpreter und das Skript als Argument angeben müssen (siehe auch http://www.webmasterworld.com/forum92/859.htm):

RewriteMap router "prg:C:/Program Files/PHP5.3.2/php-win.exe C:/dev/web/www/routing.php" 

Wenn das nicht funktioniert, es in Program Files wegen des Raumes sein könnte. Windows unterstützt in solchen Fällen einen Kurznamen. Zum Beispiel ist PROGRA~1 ein typischer Kurzname, aber die Ziffer im Namen wird auf der Basis "first-come-first-served" vergeben. Daher sollten Sie dies mit dem Befehl DIR überprüfen.

sonst könnten Sie Ihre PHP-win.exe ausführbare in ein Verzeichnis verschieben, die keine Leerzeichen enthält.

Wenn es nicht ganz klar schon ist, werde ich sagen, dass dies: Windows- saugt.

+0

(+1) Kommentare in 'apr_proc_create' (verwendet, um das Programm aufzurufen) auch beachten Sie: * progname muss im nativen Format nicht quoted sein, da es alle Arten von Fehlern im NT-Bibliotheksladercode gibt, die beim Parsen Fehler '/' *, obwohl ich mir nicht sicher bin, wie groß das tatsächlich ist. Es sieht so aus, als würde der Befehl später automatisch zitiert (falls nötig), also sollten die Leerzeichen hoffentlich kein Problem sein. –

+0

@Tim: Danke! Wie auch immer, die Räume sind etwas, auf das Sie achten sollten, weil sie Sie in verschiedenen Umständen beißen können. –

0

Ich hatte ähnliches Problem. Führen Sie httpd.exe von CMD aus, Apache sollte einen Fehler anzeigen.

Verwandte Themen