🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 概述 PHP 8.4是活跃的开发分支,也是新特性、主要更改和新RFC的当前目标。计划于2024年全面上市。 > PHP 8.4是一个开发分支,尚未达到通用可用性(GA)。下面的版本是用来测试即将发布的PHP版本,而不是用于生产系统。PHP 8.4的第一个GA版本计划于2024-11-21发布。 ## 下载 下载地址:https://downloads.php.net/~saki/ ![](https://img.kancloud.cn/51/64/51649850aaa53831b386c60c945ba3e5_804x603.png) 使用Git从PHP Git存储库克隆8.4.0alpha1标签 ``` git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.0alpha1 ``` **如何编译** PHP可以通过设置依赖项、构建configure脚本(`./buildconf`)、配置build`./configure`和运行`make`来编译。 ## Windows二进制文件 #### 非线程安全构建 非线程安全(NTS)构建是单线程PHP构建。它们可以在通过FastCGI协议集成PHP的Web服务器上使用,例如Nginx,Caddy和IIS。 * https://windows.php.net/downloads/qa/php-8.4.0alpha1-nts-Win32-vs17-x64.zip * https://windows.php.net/downloads/qa/php-8.4.0alpha1-nts-Win32-vs17-x86.zip **线程安全构建** 线程安全(TS)构建是多线程PHP构建,通常用于将PHP集成为多线程服务器的服务器API。最常见的用例是将PHP用作Apache模块。 * https://windows.php.net/downloads/qa/php-8.4.0alpha1-Win32-vs17-x64.zip * https://windows.php.net/downloads/qa/php-8.4.0alpha1-Win32-vs17-x64.zip ## Docker/Podman容器 #### PHP CLI PHP CLI Containers镜像只包含PHP CLI,不包含FPM或Apache模块。Alpine构建是轻量级的,但由于其musl构建可能会引入不兼容性。尽管它们的尺寸更大,但基于Debian的(没有“-alpine”后缀)图像更完整,并且被广泛使用。 **基于Alpine**:轻量级,但可能会引入不兼容性,由于他们的musl构建。 ``` docker pull php:8.4.0alpha1-cli-alpine ``` **基于Debian**:与其他组件兼容性更强,功能齐全,应用广泛。 ``` docker pull php:8.4.0alpha1-cli ``` #### PHP CLI + Web服务器集成 这些容器映像包括PHP CLI和Web服务器集成。FPM容器镜像可以与Web服务器集成,如Nginx,Caddy和Apache与Event MPM。Apache容器镜像包括Apache Web服务器,将PHP集成为Apache模块。 **基于Alpine**:轻量级,但可能会引入不兼容性,由于他们的musl构建。 ``` docker pull php:8.4.0alpha1-fpm-alpine ``` **基于Debian的ZTS Apache**:包括Apache Web服务器,将PHP集成为Apache模块。 ``` docker pull php:8.4.0alpha1-apache ``` **基于Debian的NTS FPM** PHP-FPM,可以通过Fast CGI与Nginx,Caddy和其他Web服务器集成。 ``` docker pull php:8.4.0alpha1-fpm ``` ## 更改记录 #### BCMath * RFC提议:在BCMath中添加`bcfloor`、`bcceil`和`bcround`函数。 * 性能改进。 #### 核心 * 为NetBSD、DragonFlyBSD、Solaris和Haiku添加了`zend_call_stack_get`实现。 * 在FreeBSD 12.x版本中启用了ifunc检查。 * 将`PHP_DEBUG`和`PHP_ZTS`常量的类型更改为布尔值。 * 修复了GH-13142问题(当未定义变量名包含`\0`时,名称会被缩短)。 * 修复了GH-13178问题(将打包数组转换为哈希数组时,迭代器位置不正确)。 * 修复了Solaris默认模式(32位)下的zend fiber构建。 * 修复了macOS/arm64上的zend调用栈大小。 * 在FreeBSD上添加了Zend最大执行计时器的支持。 * 确保fiber栈不被THP支持。 * 实现了GH-13609(在WeakReference类中转储包装对象)。 * 为zend fiber添加了sparc64架构汇编支持。 * 修复了GH-13581问题(NetBSD上没有足够的TLS空间)。 * 添加了对Sys-V loongarch64的fiber支持。 * 调整闭包名称以包括父函数的名称。 * 通过`tempnam()`创建的上传文件名和文件的随机性提高。 * 向`zend_mm`自定义处理程序添加了gc和shutdown回调。 * 修复了GH-14650问题(在分配内存之前计算页面大小)。 * 修复了GH-11928问题(`--enable-re`2c-cgoto没有添加-g标志)。 * 添加了`#[Deprecated]`属性。 * 修复了GH-11389问题(允许在析构函数中挂起fiber)。