<!--#include virtual="script.cgi"-->
现在我正在尝试做相应的事情,但是不是在HTML文件中,而是在PHP文件中。我已经研究了一整天,但每种方法都给我带来以下问题。我将按我认为可能有效的顺序列出它们,以及较为难以理解的方法...
1) <?php include("script.cgi"); ?>
结果:没有执行。这只是将CGI文件的全部内容打印出来,就像它只是一个文本文件一样。
2) <?php virtual("script.cgi"); ?>
结果:致命错误:调用未定义函数virtual(),在test.php的第#行
。
这让我感到困扰,因为我读到的所有东西都表明这是正确的方法。虽然我不是PHP方面的专家,但virtual
怎么可能是一个“未定义的函数”呢?它在官方PHP文档中被列为适用于PHP 5版本的有效函数。
3) <?php exec("script.cgi"); ?>
结果:空的。什么也没有。
4)
<?php
$fd = fopen("script.cgi", "r");
fpassthru($fd);
?>
结果: 未执行。这只是将 CGI 文件的全部内容打印出来,就像它只是一个文本文件一样。
5) <?php echo system("script.cgi"); ?>
结果: 混合。它会执行,但是 CGI 脚本的“结果”会被打印两次,并且前面带有“Content-type: text/html”。我不理解这一点。
Content-type: text/html resultresult
如果删除echo
,则结果为...
<?php system("script.cgi"); ?>
,结果为...
Content-type: text/html result
6) <?php print("/usr/bin/perl script.cgi"); ?>
结果:未执行。它只是打印出 print 语句后面的内容 (/usr/bin/perl script.cgi
)。(我不惊讶,但论坛里有人声称这对他们有效。)
那么我需要做什么才能执行并包含 CGI 文件的结果呢?这似乎应该很容易,但我不知道还能尝试什么。
我在一个 Apache/Linux 服务器上(cPanel),可以编辑htaccess
文件。它运行的是 PHP 版本 5.2.17。
是的,当我在浏览器中打开 CGI 文件时,它会执行并显示结果,所以我们知道服务器已配置为执行 CGI 文件。