Intereting Posts

Symfony: InvalidArgumentException при анализе web.xml

Недавно я переместил систему 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.