Shared启动配置将run/debug配置存为.idea/runConfigurations/xxx.xml并提交Git,使团队成员无需手动重建配置即可直接运行PHPUnit等任务,但需统一PHP解释器、vendor/autoload.php路径及使用$ProjectFileDir$等变量避免绝对路径问题。

Shared 启动配置会把 run/debug configuration 写进 .idea/runConfigurations/ 目录并提交到 Git
默认情况下,PhpStorm 的运行配置(比如 PHP Script、PHP Built-in Web Server、PHPUnit)只存在本地 .idea/ 下,不被版本控制。勾选 Shared 复选框后,它会把该配置文件生成为 XML,存进项目根目录下的 .idea/runConfigurations/xxx.xml,并建议你把它加入 Git 提交。
这样做的直接效果是:其他成员 clone 项目后,无需手动重建「右键 → Run」用的配置,打开就可用——尤其是 PHPUnit 测试套件、带特定 --filter 参数的脚本、或绑定了环境变量的 CLI 命令。
- 必须手动在 Git 中添加
.idea/runConfigurations/目录(.gitignore 通常默认忽略整个.idea/) - XML 文件里硬编码了绝对路径(如
SCRIPT_PATH)、本地 PHP 解释器 ID 或扩展路径,跨机器可能失效;建议用$ProjectFileDir$这类变量替代绝对路径 - 如果团队 PHP 版本不一致,
PHP Interpreter字段可能报错,此时需右键配置 → Edit Configuration → 点击解释器旁的铅笔图标重新绑定
哪些运行配置适合共享
不是所有配置都值得共享。真正能提升协作效率的是那些「参数固定、执行逻辑明确、不依赖本地路径」的配置。
-
PHPUnit:测试启动命令、--configuration phpunit.xml、--testdox等标志位,几乎无副作用 -
PHP Script:入口脚本路径用$ProjectFileDir$/artisan或$ProjectFileDir$/bin/console,且不带--env=local这类敏感参数 -
PHP Built-in Web Server:端口设为8000、路由器脚本指定为router.php,方便统一访问http://localhost:8000 - 避免共享:
PHP Remote Debug(含 xdebug.client_host)、JavaScript Debug(含 localhost URL)、任何含密码或 token 的环境变量
Shared 配置和 phpunit.xml 不是一回事
很多人误以为共享了 PHPUnit 配置就等于共享了 phpunit.xml。其实两者完全独立:phpunit.xml 是 PHPUnit 自身读取的配置(测试路径、bootstrap、extensions),而 PhpStorm 的 Shared 配置只是告诉 IDE「用什么命令、哪个解释器、传哪些参数去跑 PHPUnit」。
立即学习“PHP免费学习笔记(深入)”;
- 即使没勾选
Shared,只要phpunit.xml在项目里,右键单个测试类仍能正常运行(前提是本地已配好解释器) - 但若想让新成员一键运行全部测试套件(
Run 'All Tests'),就必须共享对应的PHPUnit配置,并确保Test Runner选项设为PHPUnit by Composer autoloader,路径指向vendor/autoload.php - 若团队用 Pest 而非 PHPUnit,Shared 配置里要手动改
Path to script为./vendor/bin/pest,否则仍走 PHPUnit 二进制
共享后别人运行失败的常见原因
配置文件进了 Git,不代表就能直接跑通。实际协作中最常卡在这几个点:
-
PHP interpreter is not configured:对方没在 Settings → PHP → Interpreter 里设置本地 PHP 路径,或路径与 XML 里记录的 ID 不匹配 -
Cannot find vendor/autoload.php:对方没运行composer install,或共享配置里错误指定了vendor/bin/phpunit(应优先用 Composer autoloader 模式) -
No tests found:Shared 配置中Test scope设成了Directory并填了/path/on/your/machine/tests,应改为Defined in the configuration file - Windows 用户运行失败:XML 里用了
/usr/bin/php路径,或脚本分隔符写成:(应为;);建议统一用$ProjectFileDir$变量 + Composer bin 脚本
真正的共享价值不在“省掉一次点击”,而在消除因运行参数不一致导致的“在我机器上能跑”的扯皮。但前提是,共享前得把路径、解释器、依赖这三块对齐。


















