Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP';s main.c启动执行_Php_C++_C - Fatal编程技术网

PHP';s main.c启动执行

PHP';s main.c启动执行,php,c++,c,Php,C++,C,我浏览了PHP5.3.1源代码树,决定看一看。每当PHP运行时,我都很好奇幕后发生了什么 我感觉到任何C或C++程序都在main函数中开始执行,但在main .c/p>中没有看到一个具有该名称的函数。 PHP代码实际上是从哪里开始执行的(命令行与MOD_PHP与CGI的不同之处?),我缺少了什么呢?main.c文件中没有可以让我下次自己回答这个问题的主函数?我想我从来没有在互联网上看到过这种问题的明确答案,但您可能会对本书的某些段落感兴趣,这可能是编写PHP扩展和PHP引擎内部的参考书 引用第1

我浏览了PHP5.3.1源代码树,决定看一看。每当PHP运行时,我都很好奇幕后发生了什么

我感觉到任何C或C++程序都在main函数中开始执行,但在main .c/p>中没有看到一个具有该名称的函数。


PHP代码实际上是从哪里开始执行的(命令行与MOD_PHP与CGI的不同之处?),我缺少了什么呢?main.c文件中没有可以让我下次自己回答这个问题的主函数?

我想我从来没有在互联网上看到过这种问题的明确答案,但您可能会对本书的某些段落感兴趣,这可能是编写PHP扩展和PHP引擎内部的参考书

引用第1章“PHP生命周期”中的一对有趣的句子是:

在通用Web服务器环境中, 您永远不会显式地启动PHP 口译译员您将启动Apache或 将加载的其他web服务器 PHP和进程脚本(根据需要)

然后,紧接着:

。。。CLI二进制文件实际上起作用 同样的方式。一个php命令, 在系统提示下输入,开始 打开“命令行API”,它起作用 作为一个小型web服务器,设计用于 为单个请求提供服务


如果您想多读一点,您可能会在上找到一些页面…

在C/C++中,“main”作为入口点是很常见的,标准对此进行了特殊处理,但这不是唯一的可能性(但它是标准要求的唯一一个)。它的实际处理方式是特定于实现的,因为运行库需要在应用程序获得控制之前进行设置。查看链接器设置以获得最终答案


php\u module\u启动
看起来它可能是您想要的,它可能是最终从真正的入口点调用的。

函数不必位于名为main.c的文件中。php命令行界面
main()
位于(第642行)。

或者在Safari中找到这本书,然后阅读:)谢谢!非常有趣的阅读。@Alan:我确实有这本书,并且已经读过了——这就是为什么我指向它^^^(不过,我从来没有检查过safari的东西;有一天应该试试看……),这可能只有在通过命令行调用PHP时才会发生。例如,当通过mod_PHP调用PHP时,如果入口点不同,我不会感到惊讶。当然,mod_PHP将作为共享对象/DLL/由web服务器加载。。。然后Web服务器将调用它想在该模块中调用的任何函数。但是php本身并不是作为程序运行的,而是作为Web服务器的一部分运行的。