我看到PHP中有一个 virtual()函数会调用CGI脚本,但这是最好的方法吗?我也可以将任何参数传递给该脚本吗?
我看到了一些使用 file_get_contents()
或 include()并传入CGI脚本的网址的示例,但这感觉就像是黑客攻击。
答案 0 :(得分:4)
如果您可以在本地调用,请使用 exec()。如果它需要作为CGI调用(如在脚本中设计为仅在CGI环境中工作),那么您需要通过 include()或 file_get_contents调用它( )即可。 virtual()将刷新缓冲区并附加子请求的输出。
您可以通过 include(), file_get_contents()和 virtual()作为GET参数传递参数:
http://localhost/cgi-bin/foo?param1=val1¶m2=val2
如果可能,请转到 exec()路线。使用其他方法可能需要更改配置。
使用exec()时,您需要像对任何CLI程序一样传递参数。
foo val1 val2
foo param1=val1 param2=val2
如何传递参数将取决于您希望稍后在其他程序/脚本中解析它们的方式。如果你从命令行调用它们,它们就会出现在被调用的程序中。
答案 1 :(得分:0)
我也无法从我的php页面调用CGI脚本。后来我意识到问题是我的页面文件有.html后缀,而不是.php后缀。修复允许我的脚本为我工作。这可能不是你的问题,但我想我会提到它以防万一。