Laravel 5.1 で、appディレクトリ配下に作った自作ファイルへのアクセスができない
- 評価
- クリップ 0
- VIEW 4,649
Laravel 5.1(Homestead)にて、appディレクトリ配下に作成したiniファイルが読み込めなくて困っております。
方法がダメなのか、コードの記述がダメなのか、気づいた点でも構いませんので、お力をお借りしたいです。
[状況]
・インターネット等で調べて、appディレクトリ配下を参照する方法として、composerで読み込む方法を使用しています。(laravel/composer.jsonでオートロードできるようにする。)
参考サイト:http://ameblo.jp/itboy/entry-12067906451.html
・iniファイルは、「app/Lib/config/local/jp.ini」で、app配下は自分でmkdirしてます。
・コントローラ側で、iniファイルを参照したいが、パスの記述方法を変えてもファイルが無いと言われます。(jp.iniとか../Lib/config/local/jp.iniとか)
環境
・PC:mac
・virtual boxのバージョン:5.0.4
・vagrantのバージョン:1.7.4
・laravel homesteadのバージョン:2.1.8
・OS:Ubuntu (14.04.3 LTS)
・PHP 5.6
・Laravel PHP 5.1
app/Lib/config/local/jp.ini ※読み込みたいファイル
jp:
item_inc:
country_list:
1: 'アイスランド'
2: 'アイルランド'
3: 'アゼルバイジャン'
4: 'アメリカ'
5: 'アラブ首長国連邦'
6: 'アルゼンチン'
7: 'イスラエル'
8: 'イギリス'
・
・
・
83: 'ロシア'
composer.json
"autoload": {
"classmap": [
"database",
"app/Lib/config/local"
],
"psr-4": {
"App\\": "app/"
}
},
※ $ composer dump-autoload を実行しております。
homesteadにssh接続して実行。
コマンド実行結果:Generating autoload files
app/Http/Controllers/TestController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Models\Member;
use App\Models\Package;
class MemberVerifyController extends Controller
{
static public function index() {
$result = file_exists ('jp.ini');
var_dump($result); // 結果:false
}
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
$result = file_exists(app_path('Lib/config/local/jp.ini'));
でアクセスできると思います。
app_path()はappディレクトリからのファイルパスを返します。
参考にされたcomposerで読み込む方法ですが、
こちらはPHPの名前空間をオートロードするもので、
指定したディレクトリパスをオートロードするものではありませんのでご注意ください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
$result = file_exists ('jp.yml');
「jp.ini」に変更するとどうでしょうか。
それよりは
jp:
item_inc:
country_list:
1: 'アイスランド'
2: 'アイルランド'
3: 'アゼルバイジャン'
4: 'アメリカ'
5: 'アラブ首長国連邦'
6: 'アルゼンチン'
7: 'イスラエル'
8: 'イギリス'
・
・
・
83: 'ロシア'
がYAML形式で記述されているので、ファイル名を「jp.ini」から「jp.yml」に変更したほうが(私としては)しっくりきます。
INI形式って確か
[section]
name=value
こんな感じですよね。投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2015/11/25 10:47
ご教示いただいた記述方法で試したところ、問題なくファイルにアクセスでき、file_exists()の結果として「true」が返ってきました。
app_pathも、調べたいた中で出会っていたのですが、使い方(相対パスの指定?)がダメだったようです。
composerを使った方法ですが、composer.jsonにディレクトリにアクセスできるようになるものだと思ってました。もう少し使い方を理解して開発を行っていきます。
(オートロードは元に戻します。)