7

最近我将一个 Symfony 系统移到另一个服务器上,从那以后就出现了错误。技术细节是: windows server 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)

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

4

3 回答 3

2

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

编辑:我发现了另一种可能的解决方案 - 符号链接。

mklink /d C:\myroot \\FILESERVER\PAGEPATH

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

于 2015-03-04T15:10:08.553 回答
1

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

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

于 2015-03-12T20:42:57.863 回答
0

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

映射\\FILESERVER\PAGEPATH到本地驱动器,假设W:( Wfrom web) 然后将 Apache 的 web 根配置为W:\web而不是\\FILESERVER\PAGEPATH\web. 我猜所有其他路径引用都是相对的,不需要更改其他任何内容。

(只是一个想法)

更新:

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

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

Apache 不以普通用户身份运行(我手头没有 Windows 系统,但我认为它以SYSTEM USER. 当 Windows 启动时,我无法判断特殊用户是否“登录”。

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

于 2015-03-06T13:29:43.050 回答