【发布时间】:2013-09-01 09:34:51
【问题描述】:
尝试制作一个简单的 Perl 脚本,该脚本查看 GET 参数以确定要使用的 php 版本,然后传递请求。这是整个脚本:
#!/usr/bin/perl
use FCGI;
$cnt = 0;
local ($buffer, @pairs, $pair, $name, $value);
while(FCGI::accept >= 0){
$php = "php";
$ENV{PHP_FCGI_CHILDREN}=3;
$ENV{PHP_FCGI_MAX_REQUESTS}=5000;
$buffer = $ENV{'QUERY_STRING'};
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
if($name == "php") {
$php = "php".$value;
}
}
print "Content-Type: text/html\r\n\r\n";
print `$php $ENV{PATH_TRANSLATED}`;
}
想法是可以使用 GET 参数切换 PHP 版本...当我使用 phpversion() 进行测试时,该部分似乎工作正常。
所以这个东西似乎“工作”了,但是一个带有简单 <?php phpinfo(); ?> 的测试文件输出一个纯字符串,而不是格式化的 HTML。它给出了准确的输出,就好像 phpinfo() 是从命令行运行的一样,因为这正是发生的事情。
所以我的问题的两个部分是
- 这真的是个问题吗?
- 如何将请求“传递”给 PHP,而不是调用命令行?
【问题讨论】: