为什么 Apache 会为任何 .lc URL 返回字符“MZ”

为什么 Apache 会为任何 .lc URL 返回字符“MZ”

我刚刚在 Windows Server 2016 Datacenter(AW​​S EC2 实例)上安装了 Apache 2.4。Web 服务器似乎运行正常,我可以访问“http://本地主机/' 并获取“它有效!”页面。

位置:C:\Apache24\

然后我通过将内容解压到以下位置来安装 LiveCode 社区服务器:C:\LiveCode

此文件夹中的可执行文件为“livecode-community-server.exe”

我的站点文件夹位置为:C:\MySite

然后我修改了 httpd 文件如下

将 DocumentRoot 更改为

DocumentRoot "c:/mysite"

将目录指令更改为

<Directory "c:/mysite">

将以下内容添加到 Directory 指令中

Order allow,deny
Allow from all
AddHandler livecode-script .lc
Action livecode-script "/livecode-cgi/livecode-community-server.exe"

添加以下新的 Directory 指令

<Directory "c:/livecode">
    Options ExecCGI
    Order allow,deny
    Require all granted
    Allow from all
</Directory>

在“IfModule alias_module”中添加以下内容

ScriptAlias /livecode-cgi/ "c:/livecode/"

保存 httpd 并重新启动 Apache 后,我打开浏览器并转到 URL“http://localhost/test.lc

浏览器的响应只是两个字符“MZ”-(查看源代码时只返回这两个字符)

在这种情况下,“test.lc”是 C:\MySite 中的一个文件。此响应针对此文件夹中的任何 .lc 文件。此文件夹中的任何 .html 文件均按预期运行。

Apache error.log 中没有条目。access.log 中有以下条目

::1 - - [23/Mar/2017:14:27:01 +0000] "GET /test.lc HTTP/1.1" 200 3

谷歌搜索没有发现任何信息,所以我只能假设这是我漏掉了一些显而易见的东西。任何关于可能发生的事情的帮助或提示都将不胜感激。

*编辑:我忘了提到以下行在 httpd 中是有效的(未注释掉),我推测这就是 CGI 模块加载所需要的全部内容?

LoadModule cgi_module modules/mod_cgi.so

*编辑:我也尝试了以下 ScriptAlias,并得到了完全相同的结果(MZ 返回并且在 access.log 中显示 200 成功代码)

ScriptAlias /livecode-cgi/livecode-community-server.exe "c:/livecode/livecode-community-server.exe"

*编辑:这篇文章似乎是关于同一个问题的(尽管用的是 perl 而不是 LiveCode) https://stackoverflow.com/questions/14792978/perl-apache-perl-script-displayed-as-plain-text

问题似乎是 Apache 2.4 中做出了一些重大更改,导致了一些问题。链接的帖子有帮助吗?再次感谢您的时间

答案1

在与 LiveCode 技术支持交谈后,他们确认 8.1.3 版本存在一些问题,并将从他们的网站上撤回该版本。

我下载了 8.1.2 并且它按预期运行。

答案2

字符MZexe 文件格式,您的网络服务器可能会返回该文件的内容livecode-community-server.exe

我不熟悉 livecode 服务器,但是看看这一页表明你的 ScriptAlias 可能不正确

ScriptAlias /livecode-cgi/livecode-server.exe "<LiveCode 服务器文件夹路径>/livecode-server.exe"

相关内容