这让我发疯了。我似乎无法让RewriteMap指令用于windows上的php脚本。下面是来自我的httpd.conf文件的相关片段:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteMap router "prg:C:/dev/web/www/routing.php"
RewriteRule (.*) ${router:$1}
</IfModule>我的简单php脚本如下所示:
#!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";
}
?>当我尝试启动Apache时,我在错误日志中得到了以下行:
错误%1不是有效的Win32应用程序。:mod_rewrite:无法启动RewriteMap程序C:/dev/web/www/routing.php配置失败
apache文档指的是“魔术曲奇技巧”(在“外部重写程序”标题下),它应该是脚本的第一行,应该指向解释器。这是我要出错的地方,还是需要以不同的方式调用RewriteMap指令?
发布于 2010-08-18 20:24:24
我怀疑神奇的曲奇把戏,也被称为shebang,能在Windows上工作。这是UNIX/Linux特性。
您必须指定PHP解释器和脚本作为它的参数(也请参阅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"如果这不起作用,那可能是因为Program Files中有空间。在这种情况下,Windows支持短名称。例如,PROGRA~1是一个典型的短名称,但是名称中的数字是在先到先得的基础上分配的,因此您应该使用DIR命令进行二次检查。
否则,您可以将php-win.exe可执行文件移动到不包含空格的目录中。
如果还不完全清楚的话,我要说的是:窗户太烂了。
发布于 2011-04-16 15:23:47
我也有类似的问题。从CMD运行httpd.exe,Apache应该会显示错误。
https://stackoverflow.com/questions/3516188
复制相似问题