2014-12-20 81 views
1

http://angulairapi.rohanchhabra.in/airportsLaravel無法在目錄中找到文件?

這是我在Laravel創建的一條非常簡單的路線。它只需要在公共目錄中的json文件,將其解碼爲一個數組並返回相同的json作爲響應。

如果你走的路線(如上所述),錯誤說「沒有這樣的文件或目錄」,但它實際上存在。它在我的本地機器上工作正常。但是當我在服務器上推送同樣的東西時,它給了我這個錯誤。

http://gitlab.learningtechasia.com:8901/rohan0793/angulairapi.git

我所做的倉庫公開,讓大家可以看看。

+0

.htaccess文件是否存在於公共目錄中(服務器上)? – lukasgeiter

+0

我必須看,但它必須,因爲我只是做了一個倉庫的git克隆。 – Rohan

+0

好的。如果您還在使用它,請檢查是否啓用了.htaccess – lukasgeiter

回答

1

我已經在我的機器上進行過測試asset()正在爲我工​​作,而您寫的路徑(public/airports.json)對我來說反映了同樣的錯誤。

Laravel的輔助函數資產(「file_name」)爲資產生成一個URL。

請了把這段代碼在你的routes.php文件更詳細

檢查laravel`s helper函數文檔,然後再試一次

<?php 

Route::get('/airports', function(){ 
    $airports = json_decode(file_get_contents(asset("airports.json"))); 
    return Response::json($airports); 
}); 

Route::get('/flights', function(){ 
    $airports = json_decode(file_get_contents(asset("flights.json"))); 
    return Response::json($airports); 
}); 

編輯

當你在本地工作用word公開你的網址,例如localhost/project-name/public/airports.json。

但是當你在服務器上部署項目似乎從URL中移除公共字,還等什麼happing這裏,服務器發現airports.json在位置http://angulairapi.rohanchhabra.in/public/airports.json但它實際上並不存在其在位置http://angulairapi.rohanchhabra.in/airports.json,所以建議使用laravel函數(在這種情況下是asset())來生成url/assets鏈接。

+0

對不起,延遲迴復。現在就像一個魅力!謝謝。 – Rohan

+0

它在我的服務器上正常工作,但由於某種原因停止在本地機器上工作。任何想法? – Rohan

+0

你在本地遇到什麼錯誤? –

0

asset()和Anands答案的替代方法是幫助函數public_path()。它從系統角度返回絕對文件路徑,而不是URL。

$airports = json_decode(file_get_contents(public_path().DIRECTORY_SEPARATOR."airports.json"))); 

asset()應該用於指向文件的URL。您發送給客戶的URL。您應該使用public_path()來處理內部事物,例如獲取文件的內容。

相關問題