php/php-src
GitHub: php/php-src
PHP 编程语言的官方解释器源代码,包含 Zend 引擎和核心扩展的实现。
Stars: 39948 | Forks: 8014
# PHP 解释器
PHP 是一种流行的通用脚本语言,特别适合于 Web 开发。PHP 快速、灵活且实用,驱动着从你的博客到世界上最受欢迎的网站的一切。PHP 在 [PHP License v3.01](LICENSE) 下分发。
[](https://github.com/php/php-src/actions/workflows/push.yml)
[](https://issues.oss-fuzz.com/issues?q=project:php)
## 文档
PHP 手册可在 [php.net/docs](https://www.php.net/docs) 获取。
## 安装
### 预构建包和二进制文件
预构建包和二进制文件可用于快速上手并运行 PHP。
对于 Windows,可以从 [windows.php.net](https://windows.php.net) 获取 PHP 二进制文件。解压归档后,`*.exe` 文件即可直接使用。
对于其他系统,请参阅 [安装章节](https://www.php.net/install)。
### 构建 PHP 源代码
*对于 Windows,请参阅 [在 Windows 上构建你自己的 PHP](https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2)。*
要从 Git 构建一个最小化的 PHP,你需要 autoconf、bison 和 re2c。对于默认构建,你还需要 libxml2 和 libsqlite3。
在 Ubuntu 上,你可以使用以下命令安装这些依赖:
```
sudo apt install -y pkg-config build-essential autoconf bison re2c libxml2-dev libsqlite3-dev
```
在 Fedora 上,你可以使用以下命令安装这些依赖:
```
sudo dnf install re2c bison autoconf make libtool ccache libxml2-devel sqlite-devel
```
在 MacOS 上,你可以使用 `brew` 安装这些依赖:
```
brew install autoconf bison re2c libiconv libxml2 sqlite
```
或者使用 `MacPorts`:
```
sudo port install autoconf bison re2c libiconv libxml2 sqlite3
```
生成 configure:
```
./buildconf
```
配置你的构建。推荐在开发时使用 `--enable-debug`,有关选项的完整列表,请参阅 `./configure --help`。
```
# 用于开发
./configure --enable-debug
# 用于生产
./configure
```
构建 PHP。为了加快构建速度,请使用 `-j` 参数指定最大作业数:
```
make -j4
```
作业数通常应与可用核心数相匹配,这可以使用 `nproc` 来确定。
## 测试 PHP 源代码
PHP 附带了一个广泛的测试套件,在成功编译源代码后,使用 `make test` 命令来运行此测试套件。
可以通过在 `TEST_PHP_ARGS` 或 `TESTS` 中设置 `-jN` 来使用多核运行测试:
```
make TEST_PHP_ARGS=-j4 test
```
这将以最多 4 个并发作业运行 `make test`:通常,最大作业数不应超过可用核心数。
使用 `TEST_PHP_ARGS` 或 `TESTS` 变量仅测试特定目录:
```
make TESTS=tests/lang/ test
```
[qa.php.net](https://qa.php.net) 网站提供了关于测试和质量保证的更多详细信息。
## 安装从源代码构建的 PHP
成功构建(和测试)后,可以使用以下命令安装 PHP:
```
make install
```
根据你的权限和前缀设置,`make install` 可能需要超级用户权限。
## PHP 扩展
扩展在 PHP 之上提供额外的功能。PHP 包含许多必要的捆绑扩展。可以在 PHP 扩展社区库 - [PECL](https://pecl.php.net) 中找到其他扩展。
## 贡献
PHP 源代码位于 [github.com/php/php-src](https://github.com/php/php-src) 的 Git 仓库中。非常欢迎通过 Fork 仓库并发送 Pull Request 的方式做出贡献。
讨论在 GitHub 上进行,但根据主题不同,也可以转发到官方 PHP 开发者邮件列表 internals@lists.php.net。
新功能需要 RFC 并且必须被开发者接受。有关流程的更多信息,请参阅 [征求意见 - RFC](https://wiki.php.net/rfc) 和 [PHP 功能投票](https://wiki.php.net/rfc/voting)。
错误修复不需要 RFC。如果错误有一个 GitHub issue,请在提交信息中使用 `GH-NNNNNN` 引用它。对于旧的 [bugs.php.net](https://bugs.php.net) Bug 追踪系统中的工单,请使用 `#NNNNNN`。
```
Fix GH-7815: php_uname doesn't recognise latest Windows versions
Fix #55371: get_magic_quotes_gpc() throws deprecation warning
```
有关 Pull Request 如何合并的详细信息,请参阅 [Git 工作流](https://wiki.php.net/vcs/gitworkflow)。
### 贡献者指南
请参阅仓库中的更多文档,以获取有关如何贡献的更多信息:
- [为 PHP 做贡献](/CONTRIBUTING.md)
- [PHP 编码标准](/CODING_STANDARDS.md)
- [内部文档](https://php.github.io/php-src/)
- [邮件列表规则](/docs/mailinglist-rules.md)
- [PHP 发布流程](/docs/release-process.md)
## 致谢
有关为 PHP 付出努力的人员列表,请参阅 [PHP 致谢页面](https://www.php.net/credits.php)。
标签:OpenVAS, PHP, SOC Prime, Syscall, Web开发, Zend引擎, 动态语言, 后端, 基础设施, 客户端加密, 客户端加密, 客户端加密, 开发工具, 服务器端, 编程语言, 编译器, 脚本语言, 解释器