借着Laracon的热潮,在这里留个static-php-cli的分享!
项目地址
GitHub Repo: github.com/crazywhalecc/static-php...
首页:static-php.dev/
项目简介
项目主要的目的是将 PHP 编译为单一静态编译的文件,这样就可以将 PHP 环境以一个单文件代替。配合 phpmicro 也可以构建二进制和代码结合为一个文件的单文件可执行程序。
项目背景
这个项目起源于我自己写的机器人框架,因为涉及到环境分发,无论使用 Docker、系统包管理还是面板等方式安装 PHP 环境,都是一个比较麻烦的问题,于是就起身做了一些常见扩展的静态编译尝试,并将 PHP 编译为单个文件加入项目进行分发。
经历过一次重构,旧版本为纯 bash 编写,灵活性不够强。新重构版本使用 PHP 的 symfony/console 作为基础编写,本身也是一个 php-cli 的程序。可以在不同环境下构建独立的 PHP 二进制。
贡献及国际化
起初项目本身只是个人框架的一个延伸,后来好像这是一个奇特的思路,对于 PHP 本身的传播来说是一个好事情。所以后续也就有了今天的 NativePHP、Herd。这里也很感谢 Beyond Code 对我的支持。
项目不足
现在项目其实并不是一个 PHP 的探索,因为静态编译的重点不在于 PHP 本身,而在于其依赖库。现在静态编译还有很多缺点,比如无法安装动态链接扩展(macOS 默认支持,但 Linux 需要加入一些魔法),使用证书需配置等问题。还有关于新扩展的支持,我不是一个专业的 C/C++ 码农,所以很多时候对于新扩展的支持还需要靠社区大佬一起帮忙。
这么说来的话,Herd 可以实现自定义扩展了,自己编译一个 PHP Runtime 的二进制替换掉就行了! :+1:
源码能保护吗
能把laravel 打包运行吗?
如果能支持 Windows 就太好了,这样可以像 go 那样把命令行应用做成单文件分发。
牛逼
大佬牛逼
大佬牛逼
laravel10 octane可以使用吗?
打包执行的原理是啥啊 恕在下寡闻了
有交流群吗?
牛逼, PHP在 macOS/Linux 上确实不像 win 上那么方便, 可以随便放任意文件夹.
貌似 FrankenPHP 也有个类似的功能, 打包php项目和运行时到单个二进制文件. 它那个貌似还包含 caddy. 直接就起web 服务了.
PHP 的加密扩展, 其实是有开源的. php beast. 但是怎么说那. 既然开源, 破解也同样好搞. 真想搞, 可以在那个基础上自己修改.
我的项目, PhpWebStudy. 目前还只能通过 Homebrew 和 Macports安装PHP. 后续看看能不能用你这个构建单文件php. 如果能, 用起来就更方便了
之前想过最简陋的方法, 把文件内嵌到二进制文件, 执行的时候释放出来 :joy: