2015-06-22 15 views
6

. Zaten sorun ->getRealPath() içeren aldığını belirledik zaman dd(); ben bu yolu almak: benim barındırma yok /data/sites/web/christophvhbe/tmplaravel 5 -> getRealPath() Ben mükemmel çalışır aşağıda gösterilen kodu, kullanmak benim yerel kalkınma,</p> <p>ama benim paylaşılan barındırma her şeyi siteyi yüklerken benim dosya yükleme dışında iyi çalıştı On doenst gösteri doğru değeri

. Ama geçici görüntülerin barınağımda nerede saklandığını buldum. Bu, burada bulunan tmp/: http://gyazo.com/e0199718324119109a4ff66321414e12.

->getRealPath() değerini doğru değere nasıl değiştirebilirim?

$fileName = time() . '-' . $request->file('foto')->getClientOriginalName(); 
$product->foto = $fileName; 
$product->save(); 

$imagePath = '/images/producten/'. $fileName; 

$image = Image::make($request->file('foto')->getRealPath())->fit(300)->save($imagePath); 

ben yükleyip mağaza görüntüleri için Image/intervention paketini kullanıyorum.

cevap

3

Muhtemelen hesabınızın kökü /data/sites/web/christophvhbe ve getRealPath tamamen doğrudur (FTP'de gördüğünüz chrooted olabilir). Sonuç olarak, $imagePath aslında sorun.

$imagePath = '/data/sites/web/christophvhbe/images/producten/'. $fileName; 

Veya, şimdiye yolları değiştirmek eğer çalışmaya devam barındırma değiştirmek eğer öyleyse daha iyisi, laravel en base_path ve/veya public_path yardımcıları kullanın: Eğer hata günlüklerini danışın

$imagePath = public_path() . '/images/producten/' . $fileName; 

, ben Sunucuda /images dizininde bir dosya oluşturmaya çalışırken izinler hatası bulacağınıza dair bahse girebilirsiniz; bu, paylaşımlı barındırma üzerinde kesinlikle oluşturma veya erişim sağlayamayacaksınız.

+0

önerdiğiniz şey asıl sorun, public_path() ve getRealPath hiç doğru değil. görüntü klasörünün asıl yolu: www.christophvh.be/images/producten/img.png. Ama bu söylediği şey değil, geçici bir haritaya erişmeye çalışıyor. Hangi görüntü/müdahalenin orijinal imajı geçici olarak sakladığını düşünüyorum. Doğru geçici haritanın nerede olduğunu biliyorum, ancak nasıl erişeceğimi bilmiyorum, çünkü www klasörümden daha yukarıda. ben – Christophvh

+0

üstte yayınlanan bağlantıda gösterilen Yani yönteminizi kullanırsanız, bu hatayı alıyorum: Image.php satırında NotWritableException 138: Yolda görüntü verileri yazılamıyor (/ data/sites/web/christophvhbe/laravel /public/images/producten/1434939947-thosiba.png) – Christophvh

+0

Yol ve URL tamamen farklı şeylerdir ve farkı anlamanız gerekir. Benim yöntemimi kullanarak, doğru ** yol ** var. Artık farklı bir sorunla karşılaşıyorsunuz, yani web sunucusu “laravel/public/images” dizinine yazamıyor. İzinlerini "777" ile "chmod" olarak ayarlayabilir veya sunucunuzun ACL'leri ve/veya "chown" işlevlerini kullanmasına izin verdiyseniz, web sunucusuna bu şekilde erişebilirsiniz. Bununla ilgili yardıma ihtiyacınız varsa, barındırıcınıza danışın - ne yapabileceğiniz, ana bilgisayardan ana bilgisayara değişebilir. Laravel'i çalıştırıyorsanız, paylaşımlı barındırmadan çıkmayı da düşünmelisiniz. – ceejayoz