プログラミングforHTML

HTMLプログラミング細かい事は覚えられないので都度見るためのページ

php [ ./ ] (てんスラ)

(ボクは わるいスライムじゃないよ。)


phpのパス(path)、相対位置(./)に関して。

phpファイルを読み込むとき、" ./ "は常に同じ階層を意味する。

  1. includeしたファイルの「./」はコール元の「./」を引き継ぐ
  2. つまりブラウザが読み込んだページのディレクトリが「カレントディレクトリ」
  3. 「./」をグローバル変数と置き換えると分かりやすいかも?


不定期にphpを触っているといつも迷ってしまうパスの指す階層。

プログラミングしているときは、そのファイルの階層を「./」だと思いプログラムを組むのですが

実際にテストしてみると、error が出てしまい毎度悩まされておりました。

これが一階層ならいいのですが、ネストしてくると、原因がなんだかさえも分からなくなり
間違った知識をそのままに成長していくことは非常に危険なので、恐らく2割くらいの初心者が
同じ過ちを犯しているだろうから、図と一緒に解説をしていきます。

自分の中の「./」のイメージ

まず、今回のフォルダの構造を紹介。こんな感じです。



Cドライブ直下に「test」フォルダがあり、main.phpと「sub」という名前のフォルダがあります。
「sub」フォルダには、AAA.phpと「image」フォルダがあります。
そして「image」フォルダの中にok.pngという画像ファイルがあります。

このとき、mainでAAA.phpをincludeし、そこからok.pngを表示させる場合を考えます。


最初に、include文を記述します。



次に、AAA.phpでok.pngを表示させます。一応、phpで画像を表示させるとして、echoでimgタグを出力します。





AAA.phpから見れば、imageフォルダは自分の直下なので、「./」でいいはず。しかし。





読み込み失敗してます。


では、AAA.phpとしては自分の場所である「sub」をパスに記述してみましょう。
ついでに、動作の比較ができるようにHTMLで先ほどのimgタグを差し込んでおきます。



これをブラウザに表示させると、




画像が読み込めていますね。下のimgタグは読み込み失敗しています。


あくまで大元のファイルからの相対位置が重要ということですかね。

念のため、AAA.phpを直接読み込んで見ると、ご覧の通り。



1つ目のimgタグは失敗。逆に今度は2つ目のimgタグが読めています。


こういう記述の仕方をしていると、他の階層から呼び出せなくなるので、別のアプローチの仕方をする必要がありますね。

私は絶対パスがあまり好きではないので、相対パスの前にグローバルな変数を付けて、疑似的に相対的に見えるようなコーディングをして対策しています。

スマートなやり方があれば知りたいのですが、教えを乞う相手もいないので、我流を貫いていきます。




更新情報・お知らせ

2019/03/22
php[./ (てんスラ)]ページを追加NEW
2019/03/18
php[include]ページを追加
2019/03/17
ポップの表示位置や出現方法を調整
2019/03/14
ひとまず各文字1クリックでコピーできるようになった
2019/03/10
文字列を1クリックでクリップボードにコピーできるような機能追加

» éŽåŽ»ãƒ­ã‚°

Other

今のところなし。

サイト情報とか

管理人:ゆるり

無駄な情報を極力省いた
情報特化型サイト
…にするつもり

学校、会社でも見やすいように
シンプルにする、予定です。
半分自分用のプログラミングコマンド集
最近、寝る喜びを知り始めた