PHP是否只适用于Apache,或者我是否可以让它适用于我自己的c++;服务器?

PHP是否只适用于Apache,或者我是否可以让它适用于我自己的c++;服务器?,php,c++,interaction,Php,C++,Interaction,PHP是否只适用于Apache,或者我是否可以使其适用于我自己的c++服务器 例如,我可以从我的c++程序向php发送一个请求,让php运行“file.php”,然后将结果返回给我的c++程序吗?php是一种解释性语言。除了通过使用它,它还支持CGI和FastCGI调用setup。因此,您可以: 调用它来执行一个PHP脚本文件;或 在后台运行,然后调用它以使用FastCGI协议运行任何PHP文件 我相信C++中有多个库用于生成一个或两个调用。例如,我们可以同时做这两件事 没有库的CGI 如果您选

PHP是否只适用于Apache,或者我是否可以使其适用于我自己的c++服务器


例如,我可以从我的c++程序向php发送一个请求,让php运行“file.php”,然后将结果返回给我的c++程序吗?

php是一种解释性语言。除了通过使用它,它还支持CGI和FastCGI调用setup。因此,您可以:

  • 调用它来执行一个PHP脚本文件;或
  • 在后台运行,然后调用它以使用FastCGI协议运行任何PHP文件
  • 我相信C++中有多个库用于生成一个或两个调用。例如,我们可以同时做这两件事

    没有库的CGI 如果您选择CGI路径,您甚至可以在没有库的情况下使用它。正确安装php cgi后,您可以进行如下常规cgi调用:

    echo "test=1" | \
    REQUEST_METHOD=POST \
    CONTENT_TYPE=application/x-www-form-urlencoded \
    CONTENT_LENGTH=6 \
    GATEWAY_INTERFACE=CGI/1.1 \
    SCRIPT_FILENAME=/full/path/to/file.php \
    REDIRECT_STATUS=true \
    REQUEST_URI=/hello/world \
    php-cgi
    
    如您所见,CGI调用是带有一些预定义环境变量(也称为)的常规系统调用。HTTP请求主体被提供给STDIN。完整的HTTP响应(包括标题)将通过标准输出发送

    CGI与FastCGI的区别
    由于每个CGI调用都是一个系统调用,所以每次调用时都需要将PHP库/模块加载到内存中。指定通过线路协议发送/接收STDIN、STDOUT、STDERR的方式。php fpm将加载内存和池连接,以加快调用速度。因此名称FastCGI.

    PHP是一种解释语言。除了通过使用它,它还支持CGI和FastCGI调用setup。因此,您可以:

  • 调用它来执行一个PHP脚本文件;或
  • 在后台运行,然后调用它以使用FastCGI协议运行任何PHP文件
  • 我相信C++中有多个库用于生成一个或两个调用。例如,我们可以同时做这两件事

    没有库的CGI 如果您选择CGI路径,您甚至可以在没有库的情况下使用它。正确安装php cgi后,您可以进行如下常规cgi调用:

    echo "test=1" | \
    REQUEST_METHOD=POST \
    CONTENT_TYPE=application/x-www-form-urlencoded \
    CONTENT_LENGTH=6 \
    GATEWAY_INTERFACE=CGI/1.1 \
    SCRIPT_FILENAME=/full/path/to/file.php \
    REDIRECT_STATUS=true \
    REQUEST_URI=/hello/world \
    php-cgi
    
    如您所见,CGI调用是带有一些预定义环境变量(也称为)的常规系统调用。HTTP请求主体被提供给STDIN。完整的HTTP响应(包括标题)将通过标准输出发送

    CGI与FastCGI的区别
    由于每个CGI调用都是一个系统调用,所以每次调用时都需要将PHP库/模块加载到内存中。指定通过线路协议发送/接收STDIN、STDOUT、STDERR的方式。php fpm将加载内存和池连接,以加快调用速度。因此命名为FastCGI。

    是的,您可以在这里阅读更多内容:这与您的要求相反。。。但可能会给你一些想法。。。另请参见:PHP-FPM(PHP作为FastCGI模块)和CGI环境中的PHP。mod_php只是一个部署选项。php可以在命令行
    php-r“echo”php中执行;“
    因此不需要apache。也许你在寻找像“是的,你可以”这样的东西,在这里读更多:这与你的要求相反。。。但可能会给你一些想法。。。另请参见:PHP-FPM(PHP作为FastCGI模块)和CGI环境中的PHP。mod_php只是一个部署选项。php可以在命令行
    php-r“echo”php中执行;“
    因此不需要apache。可能是在寻找一些我已经达到问题极限的东西,所以我希望下面的问题可以解决:如果我的c程序通过系统调用/命令行而不是CGI涉及php,有什么区别?CGI不需要在流程的某个地方做同样的事情吗?CGI调用是一个常规的系统调用/命令行调用。您只需调用CGI执行器(例如php CGI),然后通过环境变量(即在bash中,
    export VARNAME=value
    )和STDIN提供所有必需的数据。但您需要有一组正确的环境变量,才能使标准CGI程序正常工作。因此,这两者基本上没有区别。在bash/shell环境中,可以进行如下CGI调用:
    echo“test=1”| REQUEST_METHOD=POST CONTENT_TYPE=application/x-www-form-urlength=6 GATEWAY_INTERFACE=CGI/1.1 SCRIPT_FILENAME=/full/path/to/file.php REDIRECT_STATUS=true REQUEST_URI=/hello/world php CGI
    。php cgi命令将解释php文件。PHP文件会将此视为常规POST请求。您将从STDOUT获得结果HTTP响应(包括标题)。我已经达到了我的问题限制,所以我希望下面的问题可以解决:如果我的c程序通过系统调用/命令行而不是CGI涉及php,有什么区别?CGI不需要在流程的某个地方做同样的事情吗?CGI调用是一个常规的系统调用/命令行调用。您只需调用CGI执行器(例如php CGI),然后通过环境变量(即在bash中,
    export VARNAME=value
    )和STDIN提供所有必需的数据。但您需要有一组正确的环境变量,才能使标准CGI程序正常工作。因此,这两者基本上没有区别。在bash/shell环境中,可以进行如下CGI调用:
    echo“test=1”| REQUEST_METHOD=POST CONTENT_TYPE=application/x-www-form-urlength=6 GATEWAY_INTERFACE=CGI/1.1 SCRIPT_FILENAME=/full/path/to/file.php REDIRECT_STATUS=true REQUEST_URI=/hello/world php CGI
    。php cgi命令将解释php文件。PHP文件会将此视为常规POST请求。您将从STDOUT获得结果HTTP响应(包括头)。