Недавно я переместил систему Symfony на другой сервер и с тех пор получил ошибку. Технические детали: Сервер apache 2.4 на сервере Windows 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 (\\ something). У меня была такая же проблема в сетевой среде Windows с IIS и Symfony на другом сервере. К несчастью, я не смог найти решение. Я закончил с исходным кодом на том же компьютере и с использованием локального пути.
EDIT : Я нашел еще одно возможное решение – символическую ссылку.
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.