示例

真实应用,端到端验证

从 Laravel 到 WordPress,都跑在 OxPHP 上——每份配方都是一个自包含的 Docker Compose 项目:Dockerfile、compose 文件、安装命令,以及那些为 nginx + PHP-FPM 编写的文档不会涉及的细节。

Laravel

框架模式的典范应用。

PHP
8.5
路由模式
框架模式
服务
MySQL
安装
composer create-project
environment · docker-compose.yml
ENTRY_FILE=index.php
说明
—

ENTRY_FILE=index.php 会选择框架模式:public/ 成为文档根目录,因此 .env、app/ 和 vendor/ 永远无法通过 HTTP 访问。

—

容器环境变量会覆盖 .env——Laravel 的 dotenv 加载器绝不会覆盖真实的环境变量,因此在 Compose 中设置的 DB_HOST 和 APP_ENV 会生效。

—

开发镜像会在每个请求上重新校验 OPcache;对绑定挂载的 src/ 所做的修改会立即生效。

基于官方发布镜像构建

每个 Dockerfile 都从 ghcr.io/oxphp/oxphp 复制 oxphp 二进制文件、liboxphp_bridge.so 和 SAPI 扩展。PHP ABI 必须匹配:请在相同的 php:<X.Y>-zts-alpine 上编译你的应用扩展。

路由模式取决于应用的结构

public/ 下只有一个前端控制器 → 框架模式。存在多个物理入口 → 传统模式。这一个决定就取代了整份 nginx 重写规则文件。

默认即安全,无需配置

点路径拦截让 .env 和 .git/ 在任何位置都返回 404;传统模式下 PHP_DENY_PATHS 会加固上传目录;SYMLINK_ALLOW_PATHS 仅放行有意为之的符号链接。

在同一个容器里安装依赖

开发镜像自带 PHP CLI 和 Composer:artisan、drush、wp 和 bin/magento 都通过 docker compose exec 运行——无需单独的工具链。

你的技术栈不在列表里?

任何带有前端控制器的应用都能以框架模式运行——从 Laravel 配方开始,调整三个变量即可。