SAPI是PHP框架的接口层,它是进入PHP内部的入口。PHP中实现的SAPI有很多,比较典型的有:CLI、FPM、Embed、Apache2handler、Cgi、Phpdbg、litespeed。
Embed
如果我们在自己的第三方程序中也想使用PHP,那怎么办?PHP提供了一个用于这类应用场景下的SAPI,那就是Embed,它在编译后就是普通的库文件(可以选择编译为静态库或共享库),我们可以在其他的C/C++应用中调用PHP提供的API。
编译PHP时通过–enable-embed=[shared|static]指定库类型,默认共享库,编译完成后可以在PHP安装位置的/lib目录下看到生产的库文件,同时在include/php/sapi目录下会生产一个存放Embed头文件的目录。
'./configure' '--prefix=/usr/local/webserver/php' \
'--with-config-file-path=/usr/local/webserver/php/etc' \
'--enable-fpm' '--with-fpm-user=oae' '--with-fpm-group=oae'\
'--with-mysqli' '--with-pdo-mysql' \
'--with-iconv-dir' '--with-freetype-dir' '--with-jpeg-dir' '--with-png-dir' \
'--with-zlib' '--with-libxml-dir=/usr' '--enable-xml' '--disable-rpath' \
'--enable-bcmath' '--enable-shmop' '--enable-sysvsem' \