Symfony:解析时出现 InvalidArgumentException web.xml

Symfony: InvalidArgumentException while parsing web.xml

最近我将一个 Symfony 系统移到了另一个服务器上,从那以后就出现了一个错误。 技术细节是: windows 服务器 2012 上的 apache 2.4 服务器 apache 可以通过本地网络访问的文件服务器

当我移动 Symfony 页面时,我删除了缓存。 现在发生的是,我收到这些错误消息:

InvalidArgumentException: Unable to parse file "\FILESERVER\PAGEPATH\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\DependencyInjection/../Resources/config\web.xml".

InvalidArgumentException: [WARNING 1549] failed to load external entity "file://///FILESERVER/PAGEPATH/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd" (in n/a - line 0, column 0)
[WARNING 3084] Element '{http://www.w3.org/2001/XMLSchema}import': Failed to locate a schema at location 'file://///FILESERVER/PAGEPATH/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd'. Skipping the import. (in in_memory_buffer - line 8, column 0)
[ERROR 1845] Element '{http://symfony.com/schema/dic/services}container': No matching global declaration available for the validation root. (in //FILESERVER/PAGEPATH/web/ - line 5, column 0)

似乎是什么问题,在第一个错误中,路径中混合了斜杠和反斜杠,但我不知道如何解决这个问题。

这个问题是由于使用了 UNC 路径(\\something)。我在另一台服务器上使用 IIS 和 Symfony 的 Windows 网络环境中遇到了同样的问题。不幸的是,我找不到解决方案。我最终在同一台机器上拥有源代码并使用本地路径。

编辑:我找到了另一种可能的解决方案 - 符号 link。

mklink /d C:\myroot \FILESERVER\PAGEPATH

现在可以在C:\myroot下看到共享文件夹的内容了。我不知道 Apache 是否会对此感到满意,但 IIS 没有问题。还有一件事,要为网络传输引起的一些性能问题做好准备。

如果 UNC 路径有问题,如果您将网络共享映射到本地驱动器并使用本地驱动器上的路径访问应用程序,也许它会起作用。

\FILESERVER\PAGEPATH 映射到本地驱动器,比方说 W:W 来自 web),然后将 Apache 的 Web 根目录配置为 W:\web 而不是 \FILESERVER\PAGEPATH\web。我想所有其他路径引用都是相对的,不需要更改任何其他内容。

(只是一个想法)

更新:

作为普通用户,您可以将网络共享映射为本地驱动器,并使用以下命令行让它在每次登录时自动重新连接:

C:\> net use W: \FILESERVER\PAGEPATH /persistent:yes

Apache 没有 运行 作为普通用户(我手头没有 Windows 系统,但我认为 运行 是 SYSTEM USER) .当 Windows 启动时,我无法判断特殊用户 "logs on"。

但是,我认为每次都可以使用任务计划程序(在 Windows 7 或更高版本上)运行 上面的命令(存储在 .cmd 文件中) Windows 开始。

我不确定这是否与您的问题有关,但我曾经在解析 XML 文件时遇到问题,因为在解析时无法加载架构定义文件。解析器尝试通过网络加载 XML 模式文件,如果网络连接失败,解析 XML 文件也会失败。

如果您在生产环境中,出于性能原因,您可能根本不需要架构验证,因此请检查使用的解析器是否提供了关闭自动架构验证的方法。但是,如果错误发生在您的开发工作流程中,请确保可以从解析 XML 文件的网络服务器实际解析架构 URL。