2015-06-22 32 views
6

Về phát triển địa phương của tôi, tôi sử dụng mã hiển thị dưới đây, hoạt động hoàn hảo,laravel 5 -> getRealPath() doenst chương trình giá trị đúng

nhưng khi tôi tải lên trang web để tôi chia sẻ mọi thứ lưu trữ làm việc tốt, ngoại trừ tải lên tập tin của tôi . Tôi đã xác định rằng vấn đề là liên quan đến ->getRealPath(), khi tôi dd(); mà tôi có được con đường này: /data/sites/web/christophvhbe/tmp

nào không tồn tại trên lưu trữ của tôi. Nhưng tôi tìm thấy nơi các hình ảnh tạm thời được lưu trữ trên lưu trữ của tôi, nằm trong số tmp/ có tại đây: http://gyazo.com/e0199718324119109a4ff66321414e12.

Làm cách nào để thay đổi giá trị ->getRealPath() thành giá trị chính xác?

$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); 

Tôi đang sử dụng gói Image/intervention để tải lên và lưu trữ hình ảnh.

Trả lời

3

Cơ hội là gốc của tài khoản của bạn là /data/sites/web/christophvhbe và rằng getRealPath là hoàn toàn chính xác (những gì bạn thấy trong FTP có khả năng là chrooted). Kết quả là, $imagePath của bạn thực sự là vấn đề.

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

Hoặc tốt hơn nữa, sử dụng Laravel của base_path và/hoặc public_path người giúp đỡ vì vậy nếu bạn đã bao giờ thay đổi lưu trữ nó vẫn hoạt động nếu những con đường thay đổi:

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

Nếu bạn tham khảo các bản ghi lỗi của bạn, tôi sẽ đặt cược bạn tìm các lỗi cấp phép khi cố gắng tạo một tệp trong thư mục /images của máy chủ, trong đó trên chia sẻ lưu trữ, bạn chắc chắn sẽ không thể tạo hoặc truy cập.

+0

những gì bạn đang đề xuất là vấn đề thực tế, public_path() và getRealPath không chính xác chút nào. đường dẫn thực tế vào thư mục hình ảnh là: www.christophvh.be/images/producten/img.png. Nhưng đó không phải là những gì nó nói, nó đang cố gắng để acces một bản đồ tạm thời. hình ảnh/can thiệp nào sử dụng để lưu trữ tạm thời hình ảnh gốc mà tôi nghĩ. Tôi biết bản đồ tạm thời chính xác ở đâu, nhưng tôi không biết cách truy cập nó, bởi vì nó cao hơn thư mục www của tôi. được hiển thị trong liên kết tôi được đăng trên đầu trang – Christophvh

+0

Vì vậy, nếu tôi sử dụng phương pháp của bạn, tôi nhận được lỗi này: NotWritableException trong dòng Image.php 138: Không thể ghi dữ liệu hình ảnh vào đường dẫn (/ data/sites/web/christophvhbe/laravel /public/images/producten/1434939947-thosiba.png) – Christophvh

+0

Đường dẫn và URL là những thứ hoàn toàn khác nhau và bạn nên hiểu sự khác biệt. Sử dụng phương pháp của tôi, bạn có ** đường dẫn ** chính xác. Bạn đang gặp sự cố khác, đó là máy chủ web không thể ghi vào thư mục 'laravel/public/images'. Bạn có thể điều chỉnh quyền của nó thành '777' bằng' chmod' hoặc nếu máy chủ của bạn cho phép sử dụng ACL và/hoặc 'chown', bạn có thể cấp quyền truy cập máy chủ web theo cách đó. Tham khảo ý kiến ​​chủ nhà của bạn nếu bạn cần trợ giúp với điều đó - những gì bạn có thể làm thay đổi từ máy chủ lưu trữ đến máy chủ lưu trữ. Bạn cũng nên cân nhắc việc tắt lưu trữ được chia sẻ nếu bạn định chạy Laravel. – ceejayoz