我正在使用基于CGI的表单,我希望能够在生成的结果中包含一些PHP代码。但是,当我这样做时,PHP似乎没有得到处理,只是最终显示在生成的网页中。
我在做什么才有可能或者我错过了什么?
感谢。
答案 0 :(得分:2)
不,那是不可能的。但是,您可以在PHP脚本中include('http://url.to/cgi/script');
,然后将浏览器指向PHP脚本而不是CGI脚本。这将导致PHP打开与服务器的新连接,执行CGI脚本,然后将其输出解析为PHP脚本。
EDIT2 :以下是使用postdata(包括文件上传)的方法:
// Edit to match your CGI URI:
$url_to_cgi = "http://{$_SERVER['SERVER_NAME']}/cgi-bin/something.cgi";
$curl = curl_init($url_to_cgi);
curl_setopt($curl,CURLOPT_POST, true);
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
// Pass POSTDATA along to the CGI script:
$postdata = $_POST;
// If we have file uploads, pass those along too:
if(is_array($_FILES)) foreach($_FILES as $key => $file)
$post[$key] = "@{$file['tmp_name']}";
curl_setopt($curl,CURLOPT_POSTFIELDS, $postdata);
$file = tempnam('/tmp','php-curl-');
file_put_contente($file, curl_exec($curl);
include($file);
unlink($file);
请注意,这是未经测试的......
答案 1 :(得分:2)
没有。 PHP是一种服务器端语言。必须在服务器上执行PHP代码。如果将其包含在输出中,则代码将通过TCP连接发送到用户的Web浏览器。
尝试调用php
可执行文件,而不是打印PHP,例如通过system("php myscript.php")
。
请注意,PHP喜欢在其输出中显示一整套HTTP标头,因此如果在CGI输出中间执行它,可能无法获得所需的信息。
答案 2 :(得分:1)
确保在PHP代码到达PHP解析器之前将其放入页面中。
我已成功使用PHP执行CGI脚本并将其输出到页面,但您通常必须评估返回的代码或其他内容。
您可以通过包含PHP的CGI脚本来做一些技巧。假设PHP运行时将接受该脚本并且您的脚本返回有效的PHP代码,那么应该执行该操作(脚本将在页面完全解析之前运行并返回代码,因此应正确处理代码)。
可能有更好的官方方式来处理它,但那些对我有用。
答案 3 :(得分:0)
最后。 Apache2有一些称为过滤器的东西。 mod_ext_filter 可能会获得CGI输出并再次通过PHP传递。
但是,我不确定这是你想要的。如果,如何配置它。 但请看这里:http://httpd.apache.org/docs/2.2/filter.html