Pregunta

Esto me ha estado volviendo loco. Me parece que no puede obtener la Directiva RewriteMap de trabajo para un script PHP en Windows. Aquí está el fragmento relevante de mi archivo httpd.conf:

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

Mi simple script php se lee como sigue:

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

Cuando intento iniciar Apache consigo la siguiente línea en mi registro de errores:

  

[error] (OS 193)% 1 no es un válido   aplicación Win32. : Mod_rewrite:   no se pudo iniciar el programa RewriteMap   C: /dev/web/www/routing.php   Error de configuración

la documentación de Apache se refiere al 'truco cookie mágica '(bajo el 'título Programa de reescritura externa'), que debe ser la primera línea del script que debe apuntar a la intérprete. ¿Es aquí donde estoy haciendo mal o tengo que llamar a la directiva RewriteMap de manera diferente?

¿Fue útil?

Solución

dudo el truco cookie mágica funcionaría en Windows. Esta es una característica de UNIX / Linux.

Se tendrá que especificar el intérprete de PHP y el guión como argumento (véase también 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 esto no funciona, puede ser debido al espacio en Program Files. Windows es compatible con un nombre corto en estos casos. Por ejemplo PROGRA~1 es un nombre típico corto, pero el dígito en el nombre se asigna en un primer orden de solicitud, por lo que debe vuelva a comprobar con el comando DIR.

O de lo contrario se podría mover el ejecutable php-win.exe a un directorio que no contenga espacios.

Si no está totalmente claro ya, voy a decir esto:. Windows chupa

Otros consejos

he tenido un problema similar. Ejecutar httpd.exe de CMD, Apache debe mostrar error.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top