Question

Cela a été me rend fou. Je ne peux pas sembler obtenir la directive RewriteMap au travail pour un script php sur Windows. Voici l'extrait pertinent de mon fichier httpd.conf:

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

Mon simple script php se lit comme ceci:

#!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";
}
?>

Quand je tente de démarrer Apache, je reçois la ligne suivante dans mon journal d'erreur:

  

[erreur] (OS 193)% 1 ne soit pas valide   application Win32. : Mod_rewrite:   n'a pas pu démarrer le programme RewriteMap   C: /dev/web/www/routing.php   Configuration Échec

La documentation apache fait référence au « tour du cookie magique '(sous la « rubrique Programme externe Réécriture ») qui devrait être la première ligne du script qui doit pointer vers l'interprète. Est-ce là où je vais mal ou dois-je appeler différemment la directive RewriteMap?

Était-ce utile?

La solution

Je doute que le tour du cookie magique fonctionnerait sous Windows. Ceci est une fonctionnalité UNIX / Linux.

Vous devrez spécifier l'interpréteur PHP et le script comme argument (voir aussi 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"

Si cela ne fonctionne pas, il peut être à cause de l'espace dans Program Files. Windows prend en charge un nom court dans de tels cas. Par exemple PROGRA~1 est un nom court typique, mais le chiffre du nom est attribué sur un premier arrivé, premier servi, vous devriez donc une double vérification avec la commande DIR.

Ou bien vous pouvez déplacer votre exécutable php-win.exe dans un répertoire qui ne contient pas d'espaces.

Si on ne sait pas tout à fait déjà, je dirai ceci:. de Windows suce

Autres conseils

J'ai eu le même problème. Exécutez httpd.exe de CMD, Apache doit montrer l'erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top