在documentroot之外运行PHP文件(cgi-bin文件夹)
作者:互联网
我正在与一位同事合作,在XAMPP中的MAC上设置本地环境,在Windows上,我的虚拟主机看起来像下面的虚拟主机.
当我访问类似http://domain.local/cgi-bin/handler.php的URL时,Web服务器正确处理了PHP,但在他的服务器上却收到500服务器错误,并且此消息…
The server encountered an internal error and was unable to complete your request.
Error message:
Premature end of script headers:
我们尝试将cgi-bin文件夹的名称更改为其他名称,因为我注意到httpd.conf中还有另一个别名,但这没有任何作用…所以在我看来,问题似乎与权限相关.
我们认为别名设置正确,因为访问http://domain.local/cgi-bin/filenothere.php不存在,将按预期方式抛出404,任何.html / .pl文件均无法执行.
cgi-bin文件夹中存在的权限是…
戴夫员工
并归用户和组所有.
戴夫员工
虚拟主机
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName www.domain.local
ServerAlias domain.local
ServerAlias api.domain.local
# Indexes + Directory Root.
DirectoryIndex index.php
DocumentRoot E:/home/www/www.domain.co.uk/htdocs/
# CGI Directory
ScriptAlias /cgi-bin/ E:/home/www/www.domain.co.uk/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
# Logfiles
ErrorLog E:/home/www/www.domain.co.uk/logs/error.log
CustomLog E:/home/www/www.domain.co.uk/logs/access.log combined
</VirtualHost>
任何想法导致此PHP文件无法执行?
UPDATE
尝试在PHP文件的开头添加标头以说内容为PHP,现在仅输出PHP代码.
好像以别名指定的任何路径都可以访问,但是服务器不知道如何执行内容,这适用于HTML和PHP
解决方法:
我认为您的cgi-bin需要一个部分.
您的服务器可以显示脚本源的事实意味着该服务器至少对/ file / system / path / to / cgi-bin和IIRC具有与ScriptAlias冲突的读取权限b / c ScriptAlias期望/ file / system / path /出于安全原因,to / cgi-bin不可访问.我认为您的解决方案应遵循以下原则:
<Directory /file/system/path/to/cgi-bin>
Options ExecCGI
SetHandler cgi-script
</Directory
标签:php,xampp,virtualhost,cgi-bin 来源: https://codeday.me/bug/20191013/1910498.html