最近我安装了XAMPP(Apache)服务器,用于在Windows机器上运行CGI脚本。如您所知,XAMPP可以选择安装PERL,但我没有选择它,我想使用Cygwin的PERL来执行它们。
问题是当我尝试运行基本的CGI脚本时,我收到以下错误
[Tue Sep 20 19:51:10.473825 2016] [win32:error] [pid 12420:tid 1848] [client ::1:57051] AH02102: C:/xampp/cgi-bin/perltest.cgi is not executable; ensure interpreted scripts have "#!" or "'!" first line`enter code here`
[Tue Sep 20 19:51:10.473825 2016] [cgi:error] [pid 12420:tid 1848] (9)Bad file descriptor: [client ::1:57051] AH01222: don't know how to spawn child process: C:/xampp/cgi-bin/perltest.cgi
意味着Cygwin Perl路径不是vaild。然而,我确实改变了路径,并让一个shebang仍然现在正在工作。这是我正在使用的那个:
#!C:\cygwin64\bin\perl.exe
感谢任何帮助
答案 0 :(得分:0)
shbang概念不会在Windows上退出。众所周知,Apache在Windows上模仿了shbang的概念(通过阅读脚本的第一行),但仍然可能存在问题。
更好的是在Windows上使用Windows批处理文件(.bat文件)作为CGI脚本(您也可以使用.vbs)。
在Apache的配置中为特定类型的脚本执行SetHander(或AddHandler),然后使用HelloWorld.bat等批处理文件。
@echo off
echo "content-type: text/plain"
echo.
echo "Hello World"
dir
代替dir,您可以替换任何其他二进制文件(例如perl.exe)。
答案 1 :(得分:0)
在粘贴或更换shebang时,它移至第二行并使其无效,但它现在正在工作。