PHPmicro 自执行 SAPI 0.0.1-prealpha 版发布

栏目: 软件资讯 · 发布时间: 5年前

内容简介:micro自执行SAPI提供了php“自执行文件”的可能性。你只需要将构建的micro.sfx文件与任意php文件或者phar包拼接(cat或者copy /b)为一个文件就可以直接执行这个php文件。 兼容性 目前兼容PHP7.4与8.0;兼容Windo...

micro自执行SAPI提供了php“自执行文件”的可能性。你只需要将构建的micro.sfx文件与任意 php 文件或者phar包拼接(cat或者copy /b)为一个文件就可以直接执行这个php文件。

兼容性

目前兼容PHP7.4与8.0;兼容Windows、 Linux 、macOS。

构建

准备源码

1.将本仓库clone到php源码的sapi/micro下

# 在php源码目录下
git clone  sapi/micro

2.打patch
patch文件在patches目录下,选择patch文件:

patch文件 平台/PHP版本 是否必须 作用
disable_huge_page.patch Linux 可选 禁用linux构建的max-page-size选项,缩减sfx体积(典型的, 10M+ -> 5M)
vcruntime140_<php version>.patch Windows 必选 禁用sfx启动时GetModuleHandle(vcruntime140(d).dll)
win32_<php version>.patch Windows 必选 修改构建系统以静态构建
zend_stream.patch Windows 必选 修改构建系统以静态构建
phar.patch * 可选 实现phar的支持

并分别进行patch:

# 在php源码目录下
patch -p1 < sapi/micro/patches/

unix-like 构建

1.参考官方构建说明准备PHP构建环境
2.buildconf

# 在php源码目录下
./buildconf --force

3.configure

# 在php源码目录下
./configure 

参考的选项:

--disable-phpdbg --disable-cgi --disable-cli --disable-all --enable-micro --enable-phar --with-ffi --enable-zlib

3.make

# 在php源码目录下
make micro

(make all(或者make) 或许也可以,但建议还是只构建micro SAPI生成的文件在 sapi/micro/micro.sfx

Windows 构建

1.参考官方构建说明准备PHP构建环境
2.buildconf

# 在php源码目录下
buildconf

3.configure

# 在php源码目录下
configure 

参考的选项:

--disable-all --disable-zts --enable-micro --enable-phar --with-ffi --enable-zlib

4.make 由于构建系统的实现问题, Windows下不能使用nmake命令直接构建,使用nmake sfx来构建

# 在php源码目录下
nmake sfx

生成的文件在 <架构名>\<配置名>\micro.sfx
使用将micro.sfx和php文件拼接即可
例如:myawesomeapp.php内容为

<?php 
echo "hello, this is my awesome app. "PHP_EOL";

或者Windows下

COPY /b \path\to\micro.sfx + myawesomeapp.php myawesomeapp.exe
myawesomeapp.exe
REM 回显 "hello, this is my awesome app."

优化linux下php对于hugepages优化导致了生成的文件很大,如果不考虑对hugepages的优化,使用disable_huge_page.patch来来减小文件尺寸

linux下静态构建需要包含c标准库,常见的glibc较大,推荐使用musl,手动安装的musl或者某些发行版会提供gcc(或clang)的musl
wrapper:musl-gcc或者musl-clang。在进行configure之前,通过指定CC和CXX变量来使用这些wrapper

例如

# ./buildconf things...
export CC=musl-gcc
export CXX=musl-gcc
# ./configure balabala
# make balabala

linux下构建时一般希望是纯静态的,但构建使用的发行版不一定提供依赖的库(zlib libffi等)的静态库版本,这时考虑自行构建依赖库
以libffi为例:

# 通过git获取源码
git clone https://github.com/libffi/libffi
cd libffi
git checkout 
autoreconf -i
# 或者直接下载tarball解压
wget 
tar xf 
cd 
# 如果使用musl的话
export CC=musl-gcc
export CXX=musl-gcc
# 构建安装
./configure --prefix=/my/prefered/path &&
make -j`nproc` &&
make install

然后使用以下export命令来构建micro:

# ./buildconf things...
# export CC=musl-xxx things...
export PKG_CONFIG_PATH=/my/prefered/path/lib/pkgconfig
# ./configure balabala
# make balabala

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法分析

数据结构与算法分析

[美]Mark Allen Weiss / 张怀勇 / 人民邮电出版社 / 2007年 / 49.00元

《数据结构与算法分析:C++描述(第3版)》是数据结构和算法分析的经典教材,书中使用主流的程序设计语言C++作为具体的实现语言。书的内容包括表、栈、队列、树、散列表、优先队列、排序、不相交集算法、图论算法、算法分析、算法设计、摊还分析、查找树算法、k-d树和配对堆等。《数据结构与算法分析:C++描述(第3版)》适合作为计算机相关专业本科生的数据结构课程和研究生算法分析课程的教材。本科生的数据结构课......一起来看看 《数据结构与算法分析》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具