项目级PHP运行参数必须通过「运行/调试配置」的Interpreter options填-d参数实现,Settings→PHP→Interpreter仅指定PHP路径,不支持传参;不同运行类型(PHP Script、PHPUnit、Composer等)需单独配置,且须保存为永久配置。

项目级 PHP 运行参数(如 memory_limit、display_errors)必须通过「运行/调试配置」里的 Interpreter options 填 -d 参数实现,Settings → PHP → Interpreter 里改不了——那里只管用哪个 php,不管怎么用它。
为什么在 Settings → PHP → Interpreter 里填不了 -d 参数
那个设置界面只接受一个可执行文件路径(比如 /usr/bin/php 或 C:\xampp\php\php.exe),不支持传参。你在这里改任何东西,都不会影响实际执行命令的参数列表。真正拼接 php -d xxx script.php 的地方是每次运行时的配置项,不是解释器注册表。
Interpreter options 里怎么填 -d 参数
入口是右键 PHP 文件 → Run 'xxx.php' → 再右键该运行配置 → Edit Configurations… → 切到 Configuration 标签页 → 找到 Interpreter options 输入框:
- 每组参数用空格分隔,例如:
-d memory_limit=256M -d display_errors=On -d error_reporting=E_ALL - 值里含空格必须加引号,比如:
-d log_errors_max_len="1024" - 不能写成
-d "memory_limit=256M"—— 引号位置错会导致 PHP 忽略该参数 - 多个
-d可共存,顺序无关,但重复 key 会以后者为准
不同运行类型都要单独配
PHP Script、PHPUnit、PHPCS、Composer 命令……它们各自走不同的运行配置模板,Interpreter options 不互通:
立即学习“PHP免费学习笔记(深入)”;
- PHP 脚本:在 PHP Script 类型配置里设
Interpreter options - Composer 命令:进 Composer 类型配置 →
Options栏填-d参数(不是Interpreter options) - PHPUnit:选 PHPUnit 类型 → 同样在
Interpreter options里填 - 临时配置不会保存参数,务必点
Save configuration转成永久配置
和环境变量混用时要注意什么
Interpreter options 和 Environment variables 是两套独立机制,但最终会一起出现在命令行里,比如:APP_ENV=dev php -d display_errors=On script.php:
- 环境变量填在同一个配置页的
Environment variables区域(需先勾选Include parent environment variables) - 两者没有执行顺序依赖,PHP 本身先读
-d再读php.ini,环境变量由 shell 提前注入 - 别把
error_reporting这类既可通过-d设置、又依赖APP_ENV的逻辑搞混——-d优先级更高,会直接覆盖php.ini里的同名项
最常被忽略的是:每个运行类型都得单独配一遍,而且临时配置不保存 -d 参数。一不留神就发现 dev 环境跑着 prod 的 display_errors=Off,还查不出哪改错了。



















