2013-11-15 20 views
5

YII Project'i sunucuda çalıştırdığımda, bu hatayı aldım.CAssetManager.basePath "/ assets" geçersiz. Lütfen dizinin var olduğundan ve Web sunucusu işlemi tarafından yazılabilir olduğundan emin olun.

CException 

CAssetManager.basePath "/var/www/html/v2/assets" is invalid. Please make sure the directory exists and is writable by the Web server process. 

/var/www/html/v2/yii/framework/web/CAssetManager.php(116) 

104  } 
105 
106  /** 
107  * Sets the root directory storing published asset files. 
108  * @param string $value the root directory storing published asset files 
109  * @throws CException if the base path is invalid 
110  */ 
111  public function setBasePath($value) 
112  { 
113   if(($basePath=realpath($value))!==false && is_dir($basePath) && is_writable($basePath)) 
114    $this->_basePath=$basePath; 
115   else 
116    throw new CException(Yii::t('yii','CAssetManager.basePath "{path}" is invalid. Please make sure the directory exists and is writable by the Web server process.', 
117     array('{path}'=>$value))); 
118  } 
119 
120  /** 
121  * @return string the base url that the published asset files can be accessed. 
122  * Note, the ending slashes are stripped off. Defaults to '/AppBaseUrl/assets'. 
123  */ 
124  public function getBaseUrl() 
125  { 
126   if($this->_baseUrl===null) 
127   { 
128    $request=Yii::app()->getRequest(); 

Bilmiyorum, nasıl çözülür? Lütfen bunun çözümünü açıklayınız?

Bu

assets 
protected <-- Yii app 
js 
css 
yii 
+1

otomatik olarak eşleşeceği için, grubunuza www-data (web-işleminiz) eklediyseniz, bu adım gerekli değildir. Eğer/var/www/html/v2/assets 'varsa webserver kullanıcısı tarafından yazılabilir değil.'/var/www/html/v2/varlıklar 'projenizin' varlıkları 'dizini değilse, uygulamanız yanlış yapılandırılmıştır – Ezze

+0

Şimdi ne yapmalıyım? – unknownbits

+1

Dizin varsa, yazmayı kabul etmelisiniz Manquer gibi web sunucusu işlemlerinin izinleri yazılmıştır.Ayrıca 'korumalı/çalışma zamanı 'dizini oluşturulmalı ve yazılabilir olmalıdır – Ezze

cevap

4

varlıklar klasör web sunucu işlemi tarafından yazılabilir olmalıdır benim Proje Yapısı olduğunu. Apache'de varsayılan olarak yapılandırılmışsa, genellikle www-data'dır. Sen '+ w' izni ile klasör grubuna ekleyin ya varlıklar klasör yalnızca js ve gelen neyse kamu maruz kalacağı css dosyalarını içerecek şekilde

Alternatif sadece 777 izinleri değiştirmek modifikasyonlarına kök dizin

chmod 777 -R ./assets 

, yapabileceğiniz (app yii auth rolleri kullanmak için yapılandırılmışsa ) Ayrıca çalışma zamanı ve veri/auth.php ile aynı sorunu karşı karşıya gelecek orada benzer uygun modifikasyonlar yanı

UPDATE :: PHP < için Ek Ayarlar 5,4 güvenli mod bayrakları ayarlanmışsa (bu 5.4'te amortismana tabi tutulduysa) 5.4 gerekir. Php.ini dosyanızdaki güvenli mod ayarlarını nasıl yapılandıracağınıza bakın http://php.net/manual/en/ini.sect.safe-mode.php. Bayrakları tamamen kapatabilir veya söz konusu dizinleri hariç tutabilirsiniz. (Otomatik olarak

+1

Büyük tesadüf Bu tam hatam var ve cevabınız yeni. İzinleri değiştirmek ancak başka bir hataya yol açtı:' kopyalama() [function.copy]: SAFE MODE Kısıtlama yürürlükte UID/gid 219804/219804 olan betik değil UID/gid 25000/25000'ye ait olan/f5//public/assets/27ff0fb6 erişim izni verildi. Tuhaf olan şey, '27ff0fb6' isimli –

+0

isimli bir varlık alt klasörüne sahip değilsiniz. PHP sürümü <5.4 kullanıyorsunuz ve izinlere izin verirken uid (userId)/gid (groupId) kontrol etmek için güvenli mod işaretlerini ayarladınız. sistem dosya izin seviyelerine ek olarak. Güvenli modun nasıl kullanılacağı/yapılandırılacağı hakkında bilgi için bu sayfaya bakın. Http://php.net/manual/en/ini.sect.safe-mode.php – Manquer

+1

@Manquer Teşekkür Çalıştı. – unknownbits

İlgili konular