【问题标题】:Cygwin Perl CGI with Xampp带有 Xampp 的 Cygwin Perl CGI
【发布时间】:2017-01-29 01:38:52
【问题描述】:

最近我安装了 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 路径无效。但是,我确实改变了路径,并且现在仍然可以使用 shebang。这是我正在使用的:

#!C:\cygwin64\bin\perl.exe

感谢任何帮助

【问题讨论】:

  • 您使用的是哪个版本的 cygwin 的 PERL?您是否使用 cygwin 设置安装了 PERL 扩展?检查您的 $_PATH 环境变量以查看是否包含正确的 PERL 路径
  • 我正在使用 (v5.22.1)...我不打算安装任何扩展..如何检查 $_Path 环境变量..任何帮助..
  • 啊,我的错……它现在解决了……在粘贴或更改 shebang 时……它移到了第二行并使它无法工作…… .它现在工作....忽略它...感谢您的帮助
  • shebang 行通常被解释器忽略,因为“#”字符在许多脚本语言中是注释标记;一些不使用井号开始 cmets 的语言解释器仍然可能会忽略 shebang 行以识别其用途

标签: apache perl xampp cgi


【解决方案1】:

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

您可以替换任何其他二进制文件(例如 perl.exe)来代替 dir。

【讨论】:

    【解决方案2】:

    在粘贴或更改 shebang 时,它移动到第二行并使其无法正常工作,但现在可以正常工作。

    【讨论】:

      猜你喜欢
      • 2014-12-19
      • 1970-01-01
      • 2016-08-29
      • 2013-11-21
      • 1970-01-01
      • 2014-12-14
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多