7

最近、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)

問題のように見えるのは、最初のエラーで、パスにスラッシュとバックスラッシュが混在しているということですが、この問題を修正する方法がわかりません。

4

3 に答える 3

1

これがあなたの問題に関連しているかどうかはわかりませんが、解析時にスキーマ定義ファイルをロードできなかったときに、XML ファイルの解析で問題が発生したことがあります。パーサーはネットワーク経由で XML スキーマ ファイルをロードしようとしましたが、ネットワーク接続が失敗した場合、XML ファイルの解析も失敗しました。

本番環境の場合、パフォーマンス上の理由から、スキーマの検証をまったく必要としない可能性があるため、使用するパーサーが自動スキーマ検証をオフにする方法を提供しているかどうかを確認してください。ただし、開発ワークフローでエラーが発生した場合は、XML ファイルを解析する Web サーバーからスキーマ URL を実際に解決できることを確認してください。

于 2015-03-12T20:42:57.863 に答える
0

UNC パスに問題がある場合は、ネットワーク共有をローカル ドライブにマップし、ローカル ドライブ上のパスを使用してアプリケーションにアクセスすると、うまくいく可能性があります。

\\FILESERVER\PAGEPATHローカル ドライブにマップします。たとえばW:(Wからweb) にマップし、Apache の Web ルートをW:\webではなく に構成します\\FILESERVER\PAGEPATH\web。他のすべてのパス参照は相対的であり、他に何も変更する必要はないと思います。

(ちょっとした考え)

アップデート:

通常のユーザーは、次のコマンド ラインを使用して、ネットワーク共有をローカル ドライブとしてマップし、ログオンのたびに自動的に再接続することができます。

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

Apache は通常のユーザーとしては実行されません (手元に Windows システムはありませんが、Apache として実行されると思いますSYSTEM USER)。Windows の起動時に、特別なユーザーが「ログオン」したかどうかわかりません。

.cmdただし、 Windowsが起動するたびに、タスクスケジューラ(Windows 7以降)を使用して上記の(ファイルに保存された)コマンドを実行することは可能だと思います。

于 2015-03-06T13:29:43.050 に答える