You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony使用PHP配置文件导入文件时出现路径错误问题

Symfony从services.yaml转services.php后路径错误问题

原正常工作的services.yaml配置

imports:
  - { resource: '../src/**/di.php' }

services:
  _defaults:
    autowire: true
    autoconfigure: true

App\:
  resource: '../src/'
    exclude:
      - '../src/**/di.php'
      - '../src/**/Entity/'
      - '../src/**/Model/'
      - '../src/Authorization/AuthorizationProcessor/'
      - '../src/Kernel.php'

转换后的services.php配置(出现错误)

<?php
return static function (ContainerConfigurator $di): void {
    $di->import('../src/**/di.php');

    $services = $di->services()
                   ->defaults()
                   ->autowire()
                   ->autoconfigure();

    $services->load('App\\', '../src/')
             ->exclude([
                 '../src/**/di.php',
                 '../src/**/Entity/',
                 '../src/**/Model/',
                 '../src/Authorization/AuthorizationProcessor/',
                 '../src/Kernel.php',
             ]);
};

错误信息

文件"../src"不存在(位于:
"/var/www/app/src/Authorization/AuthorizationProcessor"),位于
/var/www/app/config/services.php(从"/var/www/app/src/Kernel.php"导入)。

问题原因与解决方案

问题出在exclude路径的解析逻辑差异:

  • YAML配置中,exclude的路径是相对于配置文件所在的config目录解析的;
  • PHP配置中,exclude的路径是相对于load()方法指定的resource路径(即../src/,对应实际路径/var/www/app/src/)解析的。

你的PHP配置里,exclude中的../src/**/di.php相对于/var/www/app/src/会被解析为/var/www/src/**/di.php,这个路径不存在,因此报错。

修改PHP配置的exclude数组,去掉路径前的../src/,改用相对于src目录的路径:

<?php
return static function (ContainerConfigurator $di): void {
    $di->import('../src/**/di.php');

    $services = $di->services()
                   ->defaults()
                   ->autowire()
                   ->autoconfigure();

    $services->load('App\\', '../src/')
             ->exclude([
                 '**/di.php',
                 '**/Entity/',
                 '**/Model/',
                 'Authorization/AuthorizationProcessor/',
                 'Kernel.php',
             ]);
};

这样修改后,exclude的路径会正确匹配src目录下的对应文件和目录,配置即可正常工作。


内容的提问来源于stack exchange,提问作者pepper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:07:45