2015-03-03 11 views
7

Недавно я переместил систему Symfony на другой сервер и с тех пор получил ошибку. Технические детали: Апачи 2,4-сервер на сервере окон 2012 файловом сервере, который может получить доступ апача по локальной сетиSymfony: InvalidArgumentException при разборе web.xml

Когда я переехал 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) 

Что, кажется, проблема, что в первой ошибки, Eсть смесь слешей и обратной косой черты на пути, но я понятия не имею, как исправить эту проблему.

+0

кажется глупым, но ... вы можете попробовать [это] (http://stackoverflow.com/questions/21110262/symfony2-0-invalidargumentexception) решения? – Matteo

+0

Перезагрузка компьютера? Да, я пробовал это. – frieder

+0

Я обновил свой ответ. Надеюсь, это поможет. – kba

ответ

2

Эта проблема связана с использованием пути UNC (\\ something). У меня была такая же проблема в сетевой среде Windows с IIS и Symfony на другом сервере. К несчастью, я не смог найти решение. Я закончил с исходным кодом на том же компьютере и с использованием локального пути.

EDIT: Я нашел еще одно возможное решение - символическую ссылку.

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

Теперь вы можете видеть содержимое C: \ myroot в общей папке. Я не знаю, понравится ли Apache, но у IIS нет проблем. И еще одно, быть готовым к некоторым проблемам производительности из-за сетевой передачи.

+0

Apache это не нравится. – frieder

+1

Как насчет опции FollowSymlinks в вашей конфигурации apache? Вы настроили его? – kba

+0

Да, теперь это работает – frieder

0

Если проблема связана с UNC-пути, возможно, она работает, если вы сопоставляете сетевой ресурс с локальным диском и используете пути на локальном диске для доступа к приложению.

Карта \\FILESERVER\PAGEPATH на локальный диск, скажем W: (W от web), а затем настроить веб-корень Apache на вместо \\FILESERVER\PAGEPATH\web. Я полагаю, что все другие ссылки на пути являются относительными, и ничего больше не нужно изменять.

(просто мысль)

Update:

Как обычный пользователь, вы можете отобразить сетевую папку как локальный диск и он автоматически повторно подключить на каждом входе в систему с помощью следующая команда:

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

Apache не работает как обычный пользователь (я не имею систему Windows, под рукой, но я думаю, что это работает как SYSTEM USER). Я не могу сказать, будут ли специальные пользователи «входить в систему» ​​при запуске Windows.

Однако, я думаю, что можно запустить команду выше (сохраненную в файле .cmd) с помощью планировщика заданий (в Windows 7 или новее) при каждом запуске Windows.

+0

Если есть возможность установить этот диск при запуске Windows без необходимости входа в систему, он может работать. – kba

+0

У меня нет системы Windows под рукой (она не работала в Windows с 3 лет назад), но насколько я помню, командная строка 'net' может использоваться для монтирования общих папок. Проверьте эту статью: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/net_use.mspx?mfr=true для коммутаторов. – axiac

+0

Хм ... соединения восстанавливаются при входе в систему. Apache не работает как обычный пользователь, я думаю, он не входит в систему. :-( – axiac

1

Я не уверен, связано ли это с вашей проблемой, но я когда-то испытывал проблемы с анализом XML-файлов, когда файл определения схемы не мог быть загружен во время разбора. Парсер попытался загрузить файл схемы XML через сеть, и в случае сбоя сетевого соединения, анализ XML-файла также не удался.

Если вы в производстве, по соображениям производительности, возможно, вам не нужна проверка схемы вообще, поэтому проверьте, не используется ли используемый анализатор, чтобы отключить автоматическую проверку схемы. Однако, если ошибка возникает в вашем рабочем процессе разработки, убедитесь, что URL-адреса схемы могут быть фактически разрешены с веб-сервера, который анализирует XML-файл.