2015-03-03 34 views
7

Son zamanlarda Symfony sistemini başka bir Sunucuya taşıdım ve o zamandan beri bir hata oluştu. teknik detaylar şunlardır: a windows server 2012 ben önbellek silindi Symfony'nin-sayfa taşındığında yerel ağSymfony: Web.xml ayrıştırılırken InvalidArgumentException

üzerinde apache ulaşılabilir bir dosyasunucusu üzerinde bir apache 2.4 sunucusu.

InvalidArgumentException: Unable to parse file "\\FILESERVER\PAGEPATH\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\DependencyInjection/../Resources/config\web.xml". 

ve

sorun gibi görünüyor ne
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) 

, bu ilk hata, eğik çizgiler ve ters eğik bir karışımı vardır: Bunları hatasız iletileri almak, is Şimdi ne olacak Yolda ama bu sorunu nasıl çözeceğimi bilmiyorum.

+0

aptal gibi görünüyor ama .... [bu] (http://stackoverflow.com/questions/21110262/symfony2-0-invalidargumentexception) çözümlerini deneyebilir misiniz? – Matteo

+0

Bilgisayarı yeniden başlatıyor musunuz? Evet, bunu denedim. – frieder

+0

Cevabımı güncelledim. Umarım yardımcı olur. – kba

cevap

2

Bu sorun, UNC yolunu kullanmasından kaynaklanıyor (\\ bir şey). Aynı sorun, Windows ağ ortamında IIS ve Symfony ile başka bir sunucuda da vardı. Maalesef, çözüm bulamadım. Aynı makinede kaynak kodu olması ve yerel yolu kullanmasıyla sonuçlandım.

EDIT: Bir tane daha olası çözüm buldum - sembolik bağlantı.

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

Artık paylaşılan klasörün C: \ myroot içeriği altında görebilirsiniz. Apache'nin bundan memnun olup olmayacağını bilmiyorum, ancak IIS'de sorun yok. Ve bir şey daha, ağ aktarımı nedeniyle bazı performans sorunları için hazırlıklı olun.

+0

Apache bundan hoşlanmaz. – frieder

+1

Apache yapılandırmasında FollowSymlinks seçeneğine ne dersiniz? Bunu yapılandırdın mı? – kba

+0

evet, şimdi çalışıyor – frieder

0

UNC yolu sorunsa, ağ paylaşımını bir yerel sürücüye eşlerseniz ve uygulamaya erişmek için yerel sürücüdeki yolları kullanırsanız belki de çalışır.

bir yerel sürücüye Haritası \\FILESERVER\PAGEPATH, o sırada yerine \\FILESERVER\PAGEPATH\web için Apache'nin web kök yapılandırmak W: (web den W) diyelim. Diğer tüm yol referanslarının göreceli olduğunu ve hiçbir şeyin değiştirilmesinin gerekmediğini düşünüyorum.

(sadece bir fikir)

Güncelleme:

düzenli kullanıcı olarak, yerel bir sürücü olarak bir ağ paylaşımına ve otomatik olarak kullanarak her oturum açma yeniden bağlamak olabilir aşağıdaki komut satırı:

C:\> net use W: \\FILESERVER\PAGEPATH /persistent:yes 
Apaçi Ben el altında Windows sistemi olmayan amaolarak çalışır düşünüyorum (normal kullanıcı olarak çalışmaz). Windows başladığında özel kullanıcıların "oturum açar" olup olmadığını anlayamıyorum.

Ancak, Windows başlatıldığında her zaman, Görev Zamanlayıcısı'nı (Windows 7 veya daha yeni) kullanarak yukarıdaki komutu (.cmd dosyasında saklanan) çalıştırmak mümkün olduğunu düşünüyorum.

+0

Bu sürücüyü kullanıcı girişine gerek kalmadan Windows başlangıcında monte etme olasılığı varsa işe yarayabilir. – kba

+0

Elimde bir Windows sistemi yok (3 yıldan beri Windows üzerinde çalışmadı) ama hatırlayabildiğim kadarıyla, net ağ komut satırını paylaşabilmek için paylaşımlı klasörler kullanılabilir. Bu makaleyi okuyun: Anahtarlar için http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/net_use.mspx?mfr=true. – axiac

+0

Hmm ... bağlantılar oturum açıldığında geri yüklenir. Apache normal bir kullanıcı olarak çalışmıyor, sanırım giriş yapmıyor. :-( – axiac

1

Bunun sizin sorununuzla ilgili olup olmadığından emin değilim, ancak bir keresinde şema tanımı dosyası ayrıştırma zamanında yüklenemediğinde XML dosyalarını ayrıştırma sorunları yaşadı. Ayrıştırıcı, XML şema dosyasını ağ üzerinden yüklemeye çalıştı ve ağ bağlantısının başarısız olması durumunda, XML dosyasını ayrıştırma da başarısız oldu.

Eğer üretim aşamasındaysanız, performans nedeniyle bir şema doğrulama istemeyebilirsiniz, bu nedenle kullanılan ayrıştırıcının otomatik şema doğrulamasını kapatmanın bir yolunu sunup sunmadığını kontrol edin. Ancak, geliştirme iş akışınızda hata oluşursa, şema URL'lerinin aslında XML dosyasını ayrıştıran web sunucusundan çözülebildiğinden emin olun.