Laravel在目录中找不到文件


Laravel cannot find file in directory?

http://angulairapi.rohanchhabra.in/airports

这是我在拉拉维尔创建的一条非常简单的路线。它只是在公共目录中获取一个 json 文件,将其解码为数组并返回相同的 json 作为响应。

如果您遵循路线(如上所述(,则错误显示"没有此类文件或目录",但它确实存在。它在我的本地计算机上工作正常。但是当我在我的服务器上推送同样的东西时,它给了我这个错误。

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

我已公开存储库,以便每个人都可以查看。

我已经

在我的机器上测试过 asset(( 正在为我工作,您编写的路径(public/airports.json(为我反映了相同的错误。

Laravel的Helper函数asset("file_name"(为资产生成一个URL。

请查看 Laravel 的辅助函数文档以获取更多详细信息

将此代码放在您的路线中.php然后重试

<?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);
});

编辑

当您在本地机器上工作时,您的网址具有公共一词,即本地主机/项目名称/公共/机场.json。

但是当您在服务器上部署项目时,它似乎从 URL 中删除了公共单词,所以在这里做什么,服务器在位置 http://angulairapi.rohanchhabra.in/public/airports.json 找到 Airports.json,但它实际上并不在那里它的位置 http://angulairapi.rohanchhabra.in/airports.json,所以建议使用 Laravel函数(在本例中为 asset(((来生成 URL/资产链接。

asset() 和 Anands 答案的替代方法是辅助函数public_path()。它从系统角度返回绝对文件路径,而不是 URL。

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

asset() 应用于文件的 URL。发送到客户端的 URL。您应该使用public_path()处理内部事务,例如获取文件的内容。