1

我正在将 apache2+php 服务器迁移到 mod_fcgid,当我尝试访问以“.php”结尾的链接时,服务器会打印出 php 源。

GET: http://host/?inc=test.php
Does download of the index.php script

但是当我修复 index.php 时。

GET: http://host/index.php?inc=test.php
Show the correct page content

在我的站点配置中:

Options Indexes FollowSymLinks MultiViews +ExecCGI
AllowOverride AuthConfig FileInfo Limit
AddHandler fcgid-script .php
FcgidWrapper /var/www/cgi-bin/fcgi-starter .php

其中 fcgi-starter 是一个自定义 sh 来包装 /etc/php5/cgi

#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php

如何更改配置以忽略查询字符串?

问候

4

1 回答 1

0

我认为这个问题对 ServerFault 更好。但我觉得

?inc=test.php 

不是很好的解决方案。我希望您已经防止远程包含入侵您的站点并从您的服务器读取文件。

当你现在,你的包含文件每次都是一个 php 文件,然后从你的 url 中删除.php并将它们添加到你的脚本中。

但是当您在脚本中定义它时会更好,那么您就不会遇到任何问题。

$incFile = false;

switch($_GET['inc']):
    case 'test':
        $incFile = 'test.php';
    break;
default:
    $incFile = 'nofile.php';
于 2012-10-23T16:32:17.683 回答