借着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++ 码农,所以很多时候对于新扩展的支持还需要靠社区大佬一起帮忙。

本帖已被设为精华帖!
本帖由系统于 10个月前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 19

这么说来的话,Herd 可以实现自定义扩展了,自己编译一个 PHP Runtime 的二进制替换掉就行了! :+1:

10个月前 评论

源码能保护吗

10个月前 评论
raybon 10个月前
crazywhalecc (楼主) 10个月前

能把laravel 打包运行吗?

10个月前 评论
crazywhalecc (楼主) 10个月前

如果能支持 Windows 就太好了,这样可以像 go 那样把命令行应用做成单文件分发。

10个月前 评论
crazywhalecc (楼主) 10个月前
李铭昕

牛逼

10个月前 评论
CodingHePing

大佬牛逼

10个月前 评论

laravel10 octane可以使用吗?

9个月前 评论
crazywhalecc (楼主) 9个月前

打包执行的原理是啥啊 恕在下寡闻了

5个月前 评论
crazywhalecc (楼主) 5个月前
slince (作者) 5个月前
crazywhalecc (楼主) 5个月前
CodingHePing

有交流群吗?

4个月前 评论

牛逼, PHP在 macOS/Linux 上确实不像 win 上那么方便, 可以随便放任意文件夹.

貌似 FrankenPHP 也有个类似的功能, 打包php项目和运行时到单个二进制文件. 它那个貌似还包含 caddy. 直接就起web 服务了.

PHP 的加密扩展, 其实是有开源的. php beast. 但是怎么说那. 既然开源, 破解也同样好搞. 真想搞, 可以在那个基础上自己修改.

我的项目, PhpWebStudy. 目前还只能通过 Homebrew 和 Macports安装PHP. 后续看看能不能用你这个构建单文件php. 如果能, 用起来就更方便了

3个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!