Laravelでローカルのjsonファイルを取得する

Laravelでローカルにあるjsonファイルを扱おうとしたときに少し詰まったので、対応方法をメモしておきます。

うまくいかなかったコード

public\data\test.json

{
	"test": "json test"
}

app\Http\routes.php

Route::get('/json_test', function() {
	$url = '/data/test.json';
	$json = file_get_contents($url);
	$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
	return var_dump($json);
});

$url = ‘http://localhost:8000/data/test.json’; のように絶対パスでも試してみたのですが、jsonファイルをうまく取得できませんでした。

解決方法

最終的に「C:\…」のようにjsonファイル自体の絶対パスだと取得できました。
ただサーバにアップしたときなど環境によってパスは変わってしまうので、Laravelで用意されているヘルパー関数のpublic_path()でpublicディレクトリまでのパスを取得するようにしました。

app\Http\routes.php

Route::get('/json_test', function() {
	$url = public_path() . '/data/test.json';
	$json = file_get_contents($url);
	$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
	return var_dump($json);
});

これでローカルのjsonファイルを取得できるようになりました。
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年12月
1234567
891011121314
15161718192021
22232425262728
293031