掲示板モジュールの画像保存場所について

このQ&Aのポイント
  • 掲示板モジュール内の画像保存場所について疑問があります。
  • 公開してる画像フォルダがimagesフォルダしかないので、他の場所に保存する方法はないでしょうか?
  • 掲示板モジュールは他のアプリケーションでも再利用可能なので、画像だけ独立して保存できる方法を知りたいです。
回答を見る
  • ベストアンサー

例えば、掲示板(bbs)モジュールがあったとして

例えば、掲示板(bbs)モジュールがあったとして 複数のアプリケーションから利用できるとします。 ┬ myproject │├ application1 ││├ controllers │││└ helpers ││├ models ││├ views │││└ scripts │├ application2 ││├ controllers │││└ helpers ││├ models ││├ views │││└ scripts │├ modules ││├ bbs(掲示板モジュール) │││├ controllers ││││└ helpers │││├ models │││├ views ││││└ scripts ││├ mail(メールモジュール) │││├ controllers ││││└ helpers │││├ models │││├ views ││││└ scripts │├ data │├ library │├ public 公開層(ドキュメントルート) ││├ css ││├ images ││├ .htaccess ││└ index.php 上のようなディレクトリ構成で、 掲示板モジュールには画像を使用しているのですが その画像はpublicフォルダ内のimagesフォルダに置くしかないのでしょうか? 公開してる画像フォルダがそこしかないので当然じゃないかと思われるでしょうが、 自分としては掲示板モジュールはその名前の通り、どんなアプリケーションからも 再利用可能で、画像だけ掲示板モジュールフォルダ外に置くのは違う気がするというか・・・ 例えば掲示板モジュールで使うコントローラとかモデルとかは掲示板モジュールフォルダ内にある(つまり独立している)のに 画像だけ切り離しができないわけですが、なんとかならないでしょうか?

  • PHP
  • 回答数7
  • ありがとう数18

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

No.5でhonoka-chaさんが言っているような感じで設定すれば良いのではないでしょうか。 module内に存在するコントローラは、何らかの方法でFrontControllerから呼び出し可能なんですよね。 であれば、ImagesControllerというものを設置して、 必要なリソースを常に返すようにしてやればよいのではないでしょうか。 例えば、 class ImagesController extends Controller{ function img($name){ if(file_exists("modules/views/images/$name"){ echo file_get_contents("modules/views/images/$name"); } } } とか。 そうすればWebのルートに置いてある.htaccessもそのまま利用出来るので良いのではないでしょうか。

takagoo100
質問者

お礼

ご回答ありがとうございます。 そのやり方を試してみたのですが、できました。 ありがとうございます。 ImagesControllerを設置するというのはなかなか良さそうなのですが、 hogehoge78さんはこの掲示板モジュールのようなデフォルトの画像を必要とする モジュールを設計したり利用したりしたことはあるのでしょうか? もしそうだとしたら、このやり方のデメリット(例えばセキュリティ的に問題あるとか) などありましたら教えてもらえないでしょうか?

その他の回答 (6)

回答No.7

私自身は、フレームワークのモジュールやプラグインとしてアプリケーションを構築したことはないです。 ただ、Webアプリケーションのフレームワークのビューは、必ずしもHTMLであるわけではなくて、それ以外のリソースも表示することが出来ます。(RSSやJS、CSSとかも) なのでそれで問題ない気はします。 しかし、デメリットとして、存在する実態に対してただ単に出力を行うだけなのにフレームワークのルーティングやコントローラなどをロードするので重くなる、ということが挙げられます。 そもそも負荷が少ないサイトであれば気にするほどではないと思いますが、アクセス数が増えればボトルネックになります。 その場合には、Webルート以下に実態を置くようにする。 例えば、 http://www.example.com/your_module/images/hoge.jpg というものがあった場合、よくあるFrontControllerを配するフレームワークであれば、 実際にWebルート以下に、「/webroot/your_module/images/hoge.jpg」というデータを配置すれば、 そのデータを優先して読むように設定されているかと思いますので、imagescontrollerを読みに行かないので、とくに設定を替えなくても負荷は軽減されます。 といったことを、不特定多数に公開する場合は、ReadMeファイルかなんかに書いてあげればよいのではないかなと思います。

takagoo100
質問者

お礼

ご回答ありがとうございます。 たしかに画像がたくさんあったらあまり良くないかもしれませんね。 まあでも考えうる限りでは最善の方法だと思うので あとは状況に応じて作り分けていきたいと思います。

回答No.5

│├ modules ││├ bbs(掲示板モジュール) │││├ controllers ││││└ helpers │││├ models │││├ views ││││├ scripts │││││└ image001.php ││││└ images ││││ └ image001.jpg みたいにしてimagesフォルダを抱え込む。画像を使うときはpublic下のプログラム からimage001.phpを呼び出し、それがimage001.jpg表示の役割をする、という策を 今思いつきました。 残念ながら、具体例は知らないですね。

takagoo100
質問者

お礼

ご回答ありがとうございます。 なるほど、そういうやり方もありますね。 参考になります。

回答No.4

はっきりいってpublic公開層に置くしかないでしょう。 そのうえでもし可能ならimagesフォルダ内をさらに分割して例えば │├ public 公開層(ドキュメントルート) ││├ images │││├ bbs │││├ mail みたいにするとか。 これでもまだ納得いかないかもしれませんが、切り分けしている気分にはなれるかもしれません。

takagoo100
質問者

お礼

ご回答ありがとうございます。 自分もそのような配置が最初に浮かんだのですが、 でもモジュールなのになんかそれは違うかなぁということで質問してみたのですが、 自分的に納得しないというより、 デフォルトの画像を必要としているモジュールを 実際にどのように作成して配置して利用しているか知りたいと思いました。 いくつかそのような例があると助かるのですが

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.3

>デフォルトの画像の保管場所は質問のディレクトリ構造の例だとどこになるのでしょうか? これは、モジュールの設計者が決めることなので分かりません。 「外部」というのは極端な例ですが、設定次第で「どこへでも」置くことが出来ます。利用可能であるという条件以外は設計者の自由です。 デフォルトの画像がモジュールの提供者が提供しているものであれば、多分どこか専用のフォルダに納めていると思います。この場合、ユーザーはそのフォルダを操作できないのが通常です。 自分の好きな画像をアップして使用できるようなモジュールでしたら、実際に画像をアップしてみて、どこに格納されたか探してみる位しか方法は思いつきません。 >その都度Virtual Hostsファイルで設定するのもおかしい気がします・・・ おそらく、掲示板のデータをHTMLで書き出すときに画像のパスを指定していると思います。 Virtual Hostsファイルを使わなくても、HTMLの中で画像の場所を正しく指定すれば表示されます。このため、たとえ画像が別のサーバーにあっても表示が可能です。 具体的には、HTMLの中で画像を表示するには、imgタグを使いsrcで画像を指定します。 <img src="image/image01.gif"> と書きますと、HTMLと同じ場所にあるimageフォルダの中のimage01.gifとなります。 これを <img src="http://xxxx.com/image/image01.gif"> と書きますと、xxxx.com(外部のサイトでも構いません)のimageフォルダの中のimage01.gifとなります。 このように、PHPの結果として出力されたHTMLの中で、画像のパスを指定すればいいので、Virtual Hostsファイルの設定はおそらくしないと思います。

takagoo100
質問者

お礼

ご回答ありがとうございます。 >Virtual Hostsファイルを使わなくても、HTMLの中で画像の場所を正しく指定すれば表示されます。 いややっぱり表示されませんでした・・・ myproject内に次のような記述をした.htaccessを置いてpublic(公開)フォルダ以外は見せないようにして、 [.htaccess] <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule> ┬ myproject │├ .htaccess(上の内容のファイル) │├ application1 │├ application2 │├ modules ││├ bbs(掲示板モジュール) │││├ images ││││└ a.gif │├ public 公開層(ドキュメントルート) ││├ images ││├ .htaccess ││└ index.php <img src="../modules/bbs/images/a.gif" /> と記述したのですが、表示できませんでした。 その.htaccessを削除すると表示されました。 ということはやはり何らかの形で掲示板モジュール内にあるimagesフォルダをアクセスできるように しないと駄目なわけですね? でもそれは自分的にはなんか違うというかモジュール内は基本的にアクセス禁止(public公開層にあるindex.php経由で実行される) なのに画像の場所だけアクセスできるようにするのは気持ち悪いというか・・ 先ほども書きましたけど、でもそうする以外に方法はないですよね・・?

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.2

>掲示板内で使われる表示(例えばタイトル画像とか背景画像とか) 半固定なので、設定は楽だと思います。 >つまり掲示板モジュールフォルダ内にimagesフォルダを作って >そこをアクセスできようにするということでしょうか? はい、可能です。それどころか、別のレンタルサーバーを用意して、そこにある画像を表示させることさえも出来ます。 (もちろん、takagoo100さんが掲示板のモジュールの設定変更の権限を持っていることが条件です。) >モジュールの再利用に関しては具体的に利用したことがないので >いまいち理解できてないのですが、画像を含む場合のモジュールは実際どのような >感じで再利用されているのでしょうか? モジュール次第ですので、一概には回答は出来ません。 メールモジュールですと「実行」の命令を出すときに、  ・宛先  ・件名  ・本文  ・差出人 の情報を一緒に送ります。 掲示板のタイトル画像や背景画像の場合には、都度設定するものではありませんのでおそらく「初期設定」という形で登録していると思います。 一例です。「掲示板A」「掲示板B」のふたつの掲示板を同じモジュールで表示するなら、掲示板モジュールを実行するときにAorBという情報も一緒に送ります。掲示板Aが呼び出されたら、「初期設定A」を読み込み、掲示板Bが呼び出されたら「初期設定B」読み込むようにしておけば、同じモジュールを違う設定で使うことが出来ます。

takagoo100
質問者

お礼

ご回答ありがとうございます。 例えば画像があるURLだとか様々な設定を渡すところまでは分かったのですが、 デフォルトの画像の保管場所は質問のディレクトリ構造の例だとどこになるのでしょうか? やはり掲示板モジュール内に公開層を作ることになるのでしょうか? │├ modules ││├ bbs(掲示板モジュール) │││├ controllers ││││└ helpers │││├ models │││├ views ││││└ scripts │││├ images 公開層 モジュールを利用するユーザからの情報でデザインとか画像配置位置とか決まるとは思うのですが、 デフォルトの設定のままだと、どこかに公開できる画像はモジュール側で準備してないと駄目ですよね? その場所が例えば外部のサイトにあったりだとかだと、ちょっと違うような気がするんです・・(つまり掲示板モジュール内に controllerとかmodelとかのスクリプトが纏まっているのに画像だけ違う場所にあるのは) そうすると実際にスクリプトがある掲示板モジュール内にimagesフォルダとかの公開層を作るしかないと思いますが その都度Virtual Hostsファイルで設定するのもおかしい気がします・・・ ただ画像はアクセスできてなんぼなのでそれしか方法はないですよね・・? デフォルトの画像を必要としないモジュールなら、そのモジュール内に纏めて配置することが可能だと思うんですけど うーん・・

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.1

おはようございます。 >画像だけ切り離しができないわけですが、なんとかならないでしょうか? 「掲示板」「PHP」といっても、最終的にはHTMLです。 HTMLの観点からは、パスを正しく指定すれば画像はどこにあっても構いません(もちろん、利用可能な場所というのは条件です)。 PHP での画像の置き場所の変更は、掲示板を表示させる部分と、画像のアップロードや削除などの管理画面の部分のPHPで画像のフォルダを変更すれば可能です。

takagoo100
質問者

お礼

ご回答ありがとうございます。 この掲示板モジュールの場合の画像は、掲示板内で使われる表示(例えばタイトル画像とか背景画像とか)のことです。 説明が足りず申し訳ありません。 >パスを正しく指定すれば画像はどこにあっても構いません つまり掲示板モジュールフォルダ内にimagesフォルダを作って そこをアクセスできようにするということでしょうか? │├ modules ││├ bbs(掲示板モジュール) │││├ controllers ││││└ helpers │││├ models │││├ views ││││└ scripts │││├ images 公開層 ただその都度Virtual Hostsファイルで掲示板モジュールのimagesフォルダを アクセスできるようにするのなんか違うような気がします。 画像が必要な他のモジュールを追加する場合も その都度Virtual Hostsファイルで設定する必要があるわけですよね? モジュールの再利用に関しては具体的に利用したことがないので いまいち理解できてないのですが、画像を含む場合のモジュールは実際どのような 感じで再利用されているのでしょうか? mailモジュールとか画像がない場合はなんとなく利用してる様が想像できるのですが・・

関連するQ&A

  • 複数のアプリケーションを設置する場合について

    例えばフレームワークなどを利用して、掲示板やブログなどの複数のアプリケーション作成する場合に、 どのような区分けというかファイル構成が良いのでしょうか? コントローラ毎に分ける場合 ┬ project │└ app │ ├ controllers │ │└ bbsController.php(ここにwriteアクションやdeleteアクションなどを置く) │ │└ blogController.php モジュール毎に分ける場合 ┬ project │└ app │ ├ modules │ │└ bbs │ │ ├ controllers │ │ │└ indexController.php(トップページや表示関係) │ │ │└ ~Controller.php(他にどういうコントローラの種類が必要なのか分かりませんが・・・) その他にも アプリケーション毎に分ける場合(これもどういうファイル構成(どういうコントローラ分け)にしたら良いか分かりませんが・・・) プロジェクト毎に分ける場合 など、どの粒度に分けるのが自然(自分ならこうするとか)なのかアドバイス頂けないでしょうか?

    • ベストアンサー
    • PHP
  • CGI/Perl掲示板に広告スペース

    cgi掲示板を連ねてレンタル掲示板を作ろうかと検討しています。 そこで、全てのフォルダにある掲示板cgiの任意の場所に広告を表示させたいのですが、MTみたいにモジュールを使って全てに表示させることも掲示板cgiで可能なのでしょうか? 具体的には、 1)一つ一つに広告を記載すると修正や更新がえらく大変になってしまうので、各フォルダに入っている本体(CGI掲示板)の下部に、全てに共通した広告を表示させたい。 2)広告の修正なども、1つを修正すれば全てに反映されるようにしたい。 サーバー内 ┏bbs1(レンタル掲示板)フォルダ ┣bbs2(レンタル掲示板)フォルダ ┣bbs3(レンタル掲示板)フォルダ ┣bbs4(レンタル掲示板)フォルダ ┣bbs5(レンタル掲示板)フォルダ ┣bbs6(レンタル掲示板)フォルダ ┣bbs7(レンタル掲示板)フォルダ 以下同様 無料HPレンタルスペースや無料ブログに表示される広告のような感じに、アフィリエイトやアドセンスが表示されるようにしたいのです。 広告のほうを【●●.cgi】または、●●.pm?として、 中身を以下、 #!/usr/bin/perl print "Content-type: text/html", "\n\n"; print <<"HERE"; <BR> <a href="http://px.a8.net/~"> <BR> HERE print "</BODY></HTML>\n"; } として掲示板CGIの任意の場所に呼び出して、広告の部分だけを表示させたいのですが、いろいろ調べてやっても、やはりエラーになってしまいできません。 どうか宜しくお願い致します。

  • レンタル掲示板の画像

    レンタル掲示板(BBS)を利用してるのですが 壁紙に使う画像をどうすれば使えますか? http:~~って入っててそこに設置したい画像はマイドキュメントに あるのですが・・・。 初心者ですのでわかりやすく教えていただけると助かります。

  • 無料掲示板について

    現在HPを開設し、BBSもありますが、最近、悪質書き込みが増えてきました。BBSの変更を検討していますが、下記の条件でオススメの掲示板サービスはありますか? 1、利用料が無料、もしくは格安 2、画像掲載可能 3、特定の者からの書き込みをブロックできる よろしくお願いします。

  • 携帯からもパソコンからも利用できる画像掲示板を探しています。

    こんにちわ。 FC2さんのような掲示板で、cgiまたはphpで配布しているスクリプトを探しています。 レンタル掲示板では無く、自身で設置、設定出来る物を希望します。 http://bbs.fc2.com/ もしご存知のサイト等ございましたら教えて頂けますでしょうか? よろしくお願いいたします。 ■希望するスクリプト ・携帯からもパソコンからも利用できる ・画像をアップロードできる ・レスタイプの掲示板 ・スパム対策用に画像認証が装備されている(これは、あれば尚良い機能です。)

    • ベストアンサー
    • CGI
  • BBS(掲示板)の設定方法「KET WEB」

    BBS(CGI)などの知識は全くありません。がWebサイトは2年近く『セキュリティネットhttp://www.japansecurity.net/』で独自ドメインを利用して運営しています。 今回、『KET WEB』さんのサイトの「掲示板」を使いたくて設定しようとしているのですが上手く行きません(エラー)。 どなたかお教えください。 ↓ これを使いたい ↓ http://www.kent-web.com/bbs/patio.html (Ver: 3.06のZIP形式)をダウンロードしました。 ・ patio.cgi, regist.cgi, read.cgi, admin.cgi #!/usr/local/bin/perl をエディタで変更。  → #!/usr/bin/perl に変更。 ・ sendmailのパス  → /usr/sbin/sendmail に変更。 ・ $pass も変更(8桁) ・ $upldir = '/.upl'; と$uplurl = '/.upl'; は意味が分からないのでそのまま。 ・ 以上、修正が完了したら各ファイルを以下のとおりディレクトリにFTP転送し、パーミッション を設定します。 とありますが、『パーミッション』の意味は分かったのですが、どこでどのように設定するのでしょうか? ※ FTPが関係あるのでしょうか? FTPはホームページビルダーのものを利用しています。 あと、フォルダ「patio」はTOPページのファイルと同じ階層にあります。 http://~~/patio/patio.cgi?mode=checkとしても だめでした。

  • 無料の多機能レンタル掲示板を探しています

    自分で色々探してみたのですがなかなか見つかりませんでした。 欲しい機能は優先順位から (1)投稿の際にメールアドレスを入力すると、反映時にはアドレス非公開でメールフォーム状態になりメールを受け取れる。 (2)携帯パソコン両方から利用可能。 (3)ツリー形式で表示可能(できればトピック表示と閲覧者が両方選べた方がいい) (4)アフィリエイト広告表示OK (5)画像認証投稿やアクセス拒否などその他の機能 というようなものです。 全部を満たすものは見つからなかったのですが http://bbs.avi.jp/3/ ここが(1)(2)(3)をほぼ満たしていて近かったです。 無料で探しているのですから妥協は必要だと思うのですが もし他にいい無料レンタル掲示板、もしくはCGIがあれば教えて下さい^^;

  • 個人情報保護法/掲示板(BBS)の投稿情報

    今後BBSを管理することになるのですが、その際のポリシーの作成を行っていて、下記を個人情報として特定するのかどうか、悩んでいます。。。お力を貸してもらいたいです。 1)BBSなどで投稿する際に記入することがある、「ハンドルネーム」や「ニックネーム」は個人情報なんでしょうか。(特定できてしまう人もいるっぽいですよね) 2)BBSの投稿(書込み)は投稿者としてメールアドレスなど(1番のハンドルが該当するならば、ハンドルでも)と一緒に投稿できる場合がありますが、そのような場合、一つの投稿情報として、投稿内容も個人情報になると考えています。(取扱事業者に該当していることを前提にします) その場合、投稿者のメールアドレスと投稿内容がワンセットになった投稿情報に対して、管理者は保護法に準じて、利用目的を示したり、公開しているため、第三者提供目的を示したり、さらにDBに格納されているので、個人データにも該当し、また、場合によっては、保有個人データとしての取扱をする義務が発生するように考えられます。 教えて!gooさんは個人情報書込みを禁止にしているようですが(個人情報を含んだ投稿は禁止にしているので個人情報はない、ものとして取扱っている、というロジック?なのかな)、大きな掲示板などでは登録時に取得する個人情報のみを保護法に準じて取扱い、投稿情報は除かれている(と思われる)ように思われます。 この場合、どういうロジックで投稿情報を取扱い対象から除いてよし、としているのか良く分かりません。どうなんでしょうか。 宜しくお願いします。

  • PublicPNE0.2.1でエラー発生

    OpenPNE-2.14.4で外部公開モジュール「PublicPNE0.2.1」を追加しましたが、 「エラーが発生しました。 * モジュールが見つかりません」 と書いてあるエラーページが出てきて、日記ページが外部に公開されていない状態です。 ダウンロードしたモジュールの中にあったreadme.txtの説明通りに、 「webapp_ext/modules」内に モジュールのフォルダ「ktai」「pcpublic」「portal」をアップロードし、 以下のURL(URLはダミーです)にアクセスしましたが、モジュールが動いていないようです。 http://サイトドメイン/?m=pcpublic&a=page_fh_diary&target_c_diary_id=XX サーバー環境については、ライブドア(フレックス)ですがOSは非公開、 PHP 5.1.6、それ以外については不明です。 どなたか知恵をお貸しください。 よろしくお願いします。

  • ファイルのバックアップ

    お絵かき掲示板や画像貼り付け掲示板などでアップされた 画像などは指定したフォルダに保存されますが投稿削除などで消えてしまいます。これを防ぐ方法はないでしょうか? 例えば画像をアップした場合、ひとつを公開用のフォルダ。もうひとつをバックアップ用のフォルダに保存するなどの方法です。(←できるのでしょうか?

    • ベストアンサー
    • CGI

専門家に質問してみよう