编程语言
首页 > 编程语言> > 在documentroot之外运行PHP文件(cgi-bin文件夹)

在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