Недавно я переместил систему Symfony на другой Сервер и с тех пор получил ошибку.
Технические детали:
Сервер Apache 2.4 на Windows Server 2012
Файловый сервер, к которому 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 (\\ что-то). У меня была такая же проблема в сети Windows с IIS и Symfony на другом сервере. К сожалению, я не смог найти решение. Я закончил тем, что имел исходный код на той же машине и использовал локальный путь.
РЕДАКТИРОВАТЬЯ нашел еще одно возможное решение — символическую ссылку.
mklink /d C:\myroot \\FILESERVER\PAGEPATH
Теперь вы можете увидеть в папке C: \ myroot содержимое общей папки. Я не знаю, будет ли Apache доволен этим, но у IIS нет проблем. И еще одна вещь, будьте готовы к некоторым проблемам производительности из-за передачи по сети.
Я не уверен, связано ли это с вашей проблемой, но однажды у меня возникли проблемы с синтаксическим анализом файлов XML, когда файл определения схемы не мог быть загружен во время анализа. Синтаксический анализатор попытался загрузить файл схемы XML по сети, и в случае сбоя сетевого подключения также не удалось выполнить синтаксический анализ файла XML.
Если вы работаете, по соображениям производительности вам может вообще не потребоваться проверка схемы, поэтому проверьте, предлагает ли используемый анализатор способ отключить автоматическую проверку схемы. Однако, если ошибка возникает в вашем рабочем процессе разработки, убедитесь, что URL-адреса схемы действительно могут быть разрешены с веб-сервера, который анализирует файл XML.
Если проблема связана с UNC-путем, возможно, он сработает, если вы сопоставите сетевой ресурс с локальным диском и используете пути на локальном диске для доступа к приложению.
карта \\FILESERVER\PAGEPATH
на локальный диск, скажем W:
(W
от web
) затем настройте веб-корень Apache на W:\web
вместо \\FILESERVER\PAGEPATH\web
, Я предполагаю, что все другие ссылки на пути являются относительными, и больше ничего не нужно менять.
(просто мысль)
Обновить:
Как обычный пользователь вы можете сопоставить сетевой ресурс как локальный диск и автоматически подключать его при каждом входе в систему с помощью следующей командной строки:
C:\> net use W: \\FILESERVER\PAGEPATH /persistent:yes
Apache не работает как обычный пользователь (у меня нет системы Windows под рукой, но я думаю, что она работает как SYSTEM USER
). Я не могу сказать, входит ли специальный пользователь в систему при запуске Windows.
Тем не менее, я думаю, что можно выполнить команду выше (хранится в .cmd
файл) с помощью планировщика заданий (в Windows 7 или более поздней версии) при каждом запуске Windows.