質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

3458閲覧

PHPを使って画像の呼び出し

ryohasegawa

総合スコア437

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/05/05 02:04

HTMLで画像を呼び出したいのですが、画像がドキュメントルートの外にあるファイルなので、普通には呼び出せません。
そこで、質問し得た回答を元にコードを書いてみたのですが上手くできませんでした。
どこかがまちがっているのですか?
###全体のファイル構造です。
イメージ説明
publicディレクトリが公開されています。
で実際に表示したい画像はkogin>users>icons の中にあるので普通には参照できなく、前回の質問で得た回答を参照に以下のコードを書きました。

表示したい箇所に下のコードを

html

1<img src="./../lib/Module/read_iconfile.php"/>

login>lib>Module に画像を呼び出すプログラムを書きました。

php

1<?php 2 3namespace MyApp\Module; 4 5class read_iconfile{ 6 public function __construct(){ 7 header("Content-Type: image/png"); 8 readfile("./../../users/icons/hasegawaryou.png"); 9 } 10}

実際に表示されるであろう場所はこんな感じです。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

前回の質問を見ると gallu さんがこの質問をしないための方法と注意点を書いてくれていますね^^;
よく読んでみるとイイですよ。

公開領域以外のファイルにプログラムからアクセスさせる事は、幾つかの手順を知っていないと非常に危険なので、そのあたりもちゃんと調べたほうがイイです。

投稿2017/05/05 04:01

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/05/05 10:53

具体的にはどのような事でしょうか?
退会済みユーザー

退会済みユーザー

2017/05/05 11:22 編集

gallu さんの提示してくれている方法 > 比較的簡単な方法、ではあるのですが。 まず「HTMLを記述するファイル」と「画像を出力するプログラム(ファイル)」は、切り分けて別のもの、にしたほうがよいです。 その上で。 「HTMLを出力するもの」は一端できている、と仮定をして、それとは「別に」、画像を出力するプログラム、を、別ファイルで書いた方がよいと思います。 例えば、なのですが。今、index.php(だと思われる)ファイルがあるところと同じディレクトリに、「image_put.php」というファイルを作って、そこに「画像を出力するだけの処理」を書いて、ブラウザで、 http://192.168.12.9:9000/image_put.php gallu さんの提示してくれている注意点 > この手のものは、一つづつ解決をしていかないと、混乱が激しくなる事が多いので。 公開領域以外のファイルにプログラムからアクセスさせる際の、幾つかの手順 実際の要件が不明であるため、具体的な内容が書けません。 たとえば、URLをパースし、指定ファイルを開かせる方式を取ろうとするのではないかと推測しますが、その場合、バリデーションが必須ですし、その際、ファイルチェックを厳密に行う必要があります。とか。
ryohasegawa

2017/05/05 11:25

なるほど、ありがとうございます。 まず「HTMLを記述するファイル」と「画像を出力するプログラム(ファイル)」は、切り分けて別のもの、にしたほうがよいです。 これに関しては、既に分けてあります。
退会済みユーザー

退会済みユーザー

2017/05/05 11:43

それは理解が間違っています。要は、テストと同じ発想で、最小単位から動作確認をしましょうということです。 重要なのは、以下の点です。 > そこに「画像を出力するだけの処理」を書いて、ブラウザで、 http://192.168.12.9:9000/image_put.php
ryohasegawa

2017/05/05 11:47

なるほど、一つ報告で自がうまく理解できていなかったみたいで、ファイルを分けていたんですが、画像参照のPHPをドキュメントルート内に入れていなくて、それがうまく動作していなかったみたいです。 http://192.168.12.9:9000/php_module/read_iconfile.php を実行してみると画像を表示することはできました。 これをあとは表示PHPへ表示するだけです。
退会済みユーザー

退会済みユーザー

2017/05/05 12:37

> 画像参照のPHPをドキュメントルート内に入れていなくて、それがうまく動作していなかったみたいです。 それはそうでしょう。そういったミスを回避できるように、わざわざ gallu さんが「image_put.php」を作る場所まで、忠告してくれているのですから。質問するなら、ちゃんと回答くれた人の指示を実行した方がいいですよ。
ryohasegawa

2017/05/05 12:56

はい。ありがとうございます。
guest

0

前回の質問を読んでいませんでした…すみません。


HTMLでは、サーバーのドキュメントルートより上の画像を呼び出す方法がそもそもありません。
なので方法としては、

  • ドキュメントルート内に持ってくる
  • PHPから画像を読み込んでMIMEをjpgなんかに偽装して返す

の2種類になると思われます。

投稿2017/05/05 06:47

編集2017/05/05 07:34
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/05 07:03

2番めの方法を教えてくれと言っていますよ^^;
退会済みユーザー

退会済みユーザー

2017/05/05 07:31

その記事までが前回の回答ですね。。。
退会済みユーザー

退会済みユーザー

2017/05/05 07:33

おおぅ…失礼しました。
ryohasegawa

2017/05/05 08:10

onokatio さん、te2ji さんありがとうございます。
guest

0

ベストアンサー

img タグの src には、サーバ内だけで通用するパスを書くのではなく、実際にアクセスできる URI を書く必要があります。

投稿2017/05/05 02:11

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2017/05/05 02:18

となると、C:user/・・・・って感じで書かないといけないってことですか? 実際自分が表示させる場合は相対参照で書いていますが、絶対参照で書か無いといけないと言うことでしょうか?
Zuishin

2017/05/05 02:23

相対参照とか絶対参照とかはどちらでも結構です。 外からアクセスできる URI を書かなければなりません。 例えば index.php の場合、c:///Users/ryou/Dropbox/login/public/index.php というのが内側でのみ通用するパスですが、これは外からアクセスできません。外からアクセスするなら /index.php と書かなければなりません。
ryohasegawa

2017/05/05 08:17

「外からアクセスできません」とは、他のPC(ローカル、グローバル)からってことですか? 「外からアクセスするなら /index.php」というのは、http://◯◯◯◯ /index.php ということでしょうか?
Zuishin

2017/05/05 08:37

index.php ならそうなりますね。img タグがあると、ブラウザはそこから src を取り出し、src に示された URI から画像を取得しようと試み、取得できたら表示します。つまり、ブラウザからアクセスできる URI でないと画像は表示されないということになります。
ryohasegawa

2017/05/05 10:55 編集

となると、 ドキュメントルート内でないといけないということでしょうか? 画像はドキュメントルートの外にあるので、URIの取得は不可能ではないでしょうか?
Zuishin

2017/05/05 10:56

前の質問の gallu さんの回答でも、画像を出力するための PHP はドキュメントルート以下にあります。 サーバの仕様として、ドキュメントルート以下にファイルが無ければ URI が割り当てられないのならば、そこに置く必要があるでしょうし、割り当てるのが難しいのならば置くのが良いでしょう。なぜそれを避けるのですか?
ryohasegawa

2017/05/05 11:09

ドキュメントルート内に置くと誰でもアクセスできてしまいますよね? なので、ドキュメントルート外において、ユーザのIDをデータベースから取得し、そのIDの情報だけを表示したく、この問題に直面しています。
Zuishin

2017/05/05 11:12

PHP で出力するんだから、そこでユーザーを見ればいいだけでは?
Zuishin

2017/05/05 11:15

例えばこんな風にします。 ドキュメントルートに画像を表示するための images.php を置きます。http://images.php?img=hasegawaryou.png という URL で目的の画像を出力するよう設定します。 その際、権限の無いユーザーであれば画像を出力しません。
ryohasegawa

2017/05/05 11:15

そこで見るとはどういう意味でしょうか?
Zuishin

2017/05/05 11:16

まず根本的なこと聞いていいですか? PHP 書けます?
ryohasegawa

2017/05/05 11:20

2個めの回答が見えていませんでした。
ryohasegawa

2017/05/05 11:22

その回答方法は前回の質問でもらった、ユーザのIDごとを画像を渡す方法ですよね? でも、結局はimages.phpから参照できる場所つまりドキュメント内に画像がないといけないのではないでしょうか?
Zuishin

2017/05/05 11:25

いいえ。画像がどこにあろうと関係ありません。img=hasegawaryou.png は、その画像を PHP に知らせるためのただの暗号であって、png=hasegawa でも image=h でもなんでも構いません。 要は PHP は何の画像を表示するのかという指示を受け取って、それに対応する画像を出力すればいいんです。
ryohasegawa

2017/05/05 11:28

img=というのは、クエリなのでファイル名などを渡して、それに該当する画像を表示するPHPへ渡せばいいんですよね?
ryohasegawa

2017/05/05 11:33

今回の質問のコードも、表示するPHPと画像を参照するPHPに分けてあり、参照するPHPはごくごく簡単に、存在するファイル(固定)にしてあり、表示PHPのimgタグのsrc=""に参照PHPのパスを書いてあります。 もしかして、この画像参照のPHPをドキュメントルートの中に入れろという事を言っているのでしょうか?
Zuishin

2017/05/05 11:38

そうです。
ryohasegawa

2017/05/05 11:41

やってみました。 画像参照のPHPをドキュメントルート内に持ってきました。 で、参照する画像はドキュメントルート外にあります。で、参照PHPのコードのreadfile(””)で相対参照したいのでパスを書いているんですが、エラーが出る状態です。 もう少し考えてみます。
ryohasegawa

2017/05/05 11:48

無事表示することができました。 とても助かりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問