frankenphp默认不加载php.ini,配置通过内置默认值、ini_set()、环境变量或显式-c参数指定路径实现;需手动挂载并用-c指定才能生效,php --ini结果与frankenphp无关。

FrankenPHP 默认不加载传统 php.ini,它用的是嵌入式配置模式,所以执行 php --ini 或访问 phpinfo() 时,“Loaded Configuration File” 很可能显示 (none)——这不是异常,而是设计如此。
FrankenPHP 的配置机制和传统 PHP 不同
它不依赖外部 php.ini 文件启动,而是通过以下方式控制行为:
- 所有配置项默认走内置默认值(类似 CLI 模式无 ini 时的状态)
- 支持在应用代码中用
ini_set()动态设置部分选项(如display_errors、error_reporting) - 可通过环境变量覆盖常见配置,例如:
PHP_MEMORY_LIMIT=256M、PHP_MAX_EXECUTION_TIME=300 - 若需完整 php.ini 行为,必须显式启用并挂载配置文件
如何让 FrankenPHP 加载 php.ini
只有主动指定,它才会读取 php.ini。操作分两步:
-
确认你有合法的 php.ini 文件:从 PHP 官方源码包中复制
php.ini-production,重命名为php.ini,放到你希望的位置(比如/etc/php/frankenphp.ini) -
启动时通过
-c参数指定路径:frankenphp run -c /etc/php/frankenphp.ini
或 Docker 中:docker run -v $(pwd)/php.ini:/etc/php.ini ghcr.io/dunglas/frankenphp -c /etc/php.ini
验证是否生效
在 FrankenPHP 启动的 PHP 脚本中调用 phpinfo(),搜索 “Loaded Configuration File”。如果显示你指定的路径,说明已加载成功;若仍是 (none),检查:
- 文件路径拼写是否正确(注意大小写和斜杠方向)
- 容器内是否真正挂载了该文件(Docker 需确认 -v 映射有效)
- 文件权限是否为 644 且可被运行用户读取
常见误区提醒
不要试图把 php.ini 放进 FrankenPHP 的二进制目录或默认搜索路径——它不会自动扫描;
不要依赖 php --ini 查看结果,因为那是系统 PHP CLI 的配置,与 FrankenPHP 运行时无关;
FrankenPHP 的 SAPI 名是 frankenphp,所以即使放了 php-frankenphp.ini,也不会被自动识别,必须用 -c 显式指定。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











