• ベストアンサー

includeした外部ページがリンク切れだった時

レンタルサーバーに設置したPHPページに、自宅サーバーにあるHTMLページをincludeしています。 しかし、自宅サーバーを停止させてからPHPページを開くと、include行で処理が止まるのか、ページが表示されなくなりました。 このように、外部ページをincludeしたときに、include元がリンク切れだった場合でも、include行以降の処理を続行させるためには、どのようにすればよいのでしょうか。 宜しくお願い致します。

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

  • ベストアンサー
noname#24096
noname#24096
回答No.2

試してませんが >if (file_exists ("インクルードするファイルのパス")) { を if (fopen("インクルードするファイルのパス","r")) { にしてもダメですか?

参考URL:
http://www.php.net/manual/ja/features.remote-files.php
wanna
質問者

お礼

上記の方法で無事リンク切れの判定ができるようになりました。 この度は本当にありがとうございます。大変助かりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

PHP5ならば try { include("インクルードするファイルパス"); } catch (Exception $e) { ファイルが無かったときにする処理 } PHP4にも互換するものであれば if (file_exists ("インクルードするファイルのパス")) { include("インクルードするファイルパス"); } else { ファイルが無かったときにする処理 } でいかがでしょうか.

wanna
質問者

お礼

izayoimizukiさん、ご回答ありがとうございます。 上記の方法(PHP4)を試してみましたが、file_exists行で処理が止まってしまいました。 他にもget_http_header関数を利用する方法を試しましたが、これもURLをチェックする部分で処理が止まります。 参考 http://www.res-system.com/item/545

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHPでincludeを使うと?が入る。

    さらくインターネットのレンタルサーバを使用していますが、 index.phpに include('header.php'); を入れてヘッダー部分のHTMLの呼び出しを行なっていますが 表示されるソースを見ていると、includeで呼び出しているヘッダー部分の手前に「?」が 入ってしまいます。 include(dirname(__FILE__).'/header.php'); include($_SERVER['DOCUMENT_ROOT'] . "/header.php"); など使っても同じ現象のため、どうしたら「?」を無くすことができるでしょうか。

    • ベストアンサー
    • PHP
  • include,requireで外部URLの呼び込み

    include,requireのどちらでもいいのですが、別ドメイン或いは同ドメイン内における違う階層のファイルなど(例えば外部のhttp://www.ooxx.sample)を呼び込む際に、呼び込み先のリンクや画像パスが相対バスではうまくいきません。呼び込み先のリンク、画像パスを絶対URLにすれば問題ないと思いますが、作業が困難になるので避けたいです。 PHPでinclude,requireの使い方は向かないのでしょうか?或いは、他の方法で回避できる方法はないのでしょうか? (SSIやHTMLでインラインフレームみたいなことは使わない)

    • 締切済み
    • PHP
  • リンク切れの表示

    「ホームページビルダー8」を使用しています。 最近、無料配布のテンプレート(HTML/外部CSS)を、ネットで探して使っています。 それを、「ホームページビルダー8」で使おうとしたのですが、 「リンク切れの表示」(赤い×)がでます。 調べてみると、「ページ内」の「リンク切れ」です。 しかし、ブラウザで確認すると、「リンク」されていて、動作は問題ありません。 「リンク切れの表示」(赤い×) が気になるのですが、無視してもいいんでしょうか? 「ホームページビルダー8」は、だいぶ、古いソフトなので、 最近のテンプレートだと、そういうこともあるんでしょうか? ----------------------------------------------------- 結局のところ、「動作」さえ正常なら、 「リンク切れの表示」(赤い×)などは、無視してもいいんでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • JavaScriptで外部htmlをインクルード

    至らないところがありますが、どうぞよろしくお願い致します。 目的はhtmlとJavascriptだけで、html内に他のhtmlの内容を表示することです。 Makeshop.jpを使用しているのでPHP、CGI、SSI等は使用できません。   下記リンクを参考にローカル上で外部htmlファイルの読み込みは出来ましたが、   includeの関数を呼び出す所でhttpから始まるパスを指定すると   外部htmlファイルの読み込みは出来ませんでした。   ”静的HTMLで、インクルードを実現するためのJavaScript”   http://d.hatena.ne.jp/kenpoco/20080501/1209636103   現状のパスの指定はこんな感じです。 <div> <script type="text/javascript" > include("http://www.XXX/hoge.htm"); </script> </div>   エラーが発生する部分は、関数の下記の一文です。   insertBeforeHTML(s.split("&gt;").join(">").split("&lt;").join("<"), span);   原因は分かっていません。 上記の原因解決や、また他の方法があれば教えていただきたいです。 読んで頂きありがとうございます。

  • インクルードファイルが重いのは大丈夫でしょうか?

    私はPHPでショッピングサイトを構築しているのですが、そのサイトの全てのファイルに、include.iniファイルをrequireしています。 このinclude.iniの中には、便利な関数や定数定義などを入れています。(だいたい1600行くらい) ところが、某米国のレンタルサーバーを使っているせいか、夜間(特に土曜日)はまったく動かないといっていいほど処理が遅いのです。(たいていタイムアウトになります。) 原因はやっぱりこのインクルードしているファイルが大きいせいでしょうか? それとも安価な(.comドメイン込みで年間5000円くらい)サーバーが原因なのでしょうか? 同じような状態を経験されたことはないでしょうか? ちなみに、データベースはMysqlに接続しています。

    • ベストアンサー
    • PHP
  • 外部ページの呼び出し

    フレームを使用しないで、上部にナビ、その下にメインコンテンツを置きたいと思ってるのですが SSIの<!--#include file="~" -->でファイルを呼び出すようにブログや掲示板などの外部ページを 呼び出すことって可能なんでしょうか? サーバがPHPを使えないところなので、SSI(は使えます)かjavaScriptで呼び出したいのです。 できましたら具体的にソースなど教えていただければありがたいです。 よろしくお願いいたします。

  • 外部ページからの呼び出しがOKな太っ腹な無料サーバーはないでしょうか?

     現在利用している無料WEBレンタルサーバーは非常に規制が厳しく、ICOファイルやSWFファイルもアップロードできません。ベタなHTMLだけの利用に限定されるわけですが、いろいろやりたいことができません。しかしページビュー数が多くなっても追い出されないし、軽く快適に利用できるなど、いい面もたくさんあるので移動はしないつもりです。  そこで外部ページからの呼び出しがOKな太っ腹な無料サーバーはないでしょうか?とりあえずSWFファイルや大きなJPEGファイルをを置きたいです。後はPHPやPostgresqlなんかも使えたらさらにGood。でもそんな都合のよい無料サーバーはないですよね。サーバー設置者になんのメリットもないし…

  • ボタンを押すことでincludeの値を変更するには?

    ボタンを押すことでincludeの値を変更するには? HTMLとPHPを利用してウェブサイトを制作していているのですが、リンクに関してわからないことが出てきました。 現在index.htmlに以下の記述をしています。 <div id="menu"><?php include("menu.php"); ?></div> <div id="main"><?php include("main.php"); ?></div> menu.phpにリンクを記述して、それを押すことで<div id="main">に変化を与えたいのですが、そういうことは可能でしょうか? 具体的には<div id="main">内の<?php include("main.php"); ?>を<?php include("page2.php"); ?>などとできればうれしいのですが... ActionScriptでは出来たのですが、phpではどうすればいいのでしょうか...? 目的はindex.htmlなどを一度書き上げるだけで、あとの要素は全て簡潔にすませロードさせるだけにして管理を簡単にすることです。 メニュー->サブメニュー展開->内容表示 と三行程を行うのに、普通だとそれぞれ メニューのあるページ、左記に加えサブメニューの展開されたページ、左記二つを含んだ内容のページと、三つも必要になり大変です。 なのでボタンを押すと指定した要素に別のものをロードできたら...と思って質問させていただきました。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • セッション部分のインクルード

    お世話になっております。 PHPを使ったHTMLページを作成しているのですが、 セッション部分がうまく動きません。 index.phpページの一番上部に、 <?php include "http://www.○○○.com/lib/include/base.php"; ?> というように記述し、 base.phpには、 <?php session_start(); if(!isset($_SESSION["ses_ref"])){ $_SESSION["ses_ref"]= $_SERVER["HTTP_REFERER"]; } と記述しております。 セッション部分をインクルードせずに直接index.phpに記述した場合は、きちんと動くのですが、インクルードすると動きません。 (変数を取得できません。) セッション部分をインクルードすることはできないのでしょうか。 ご教授くださると非常にありがたいです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPインクルード自の各ページ独自設定

    某ポータルサイトを運営しております。 全ページにPHPのインクルードを使って共通して入っているヘッダーにて <h1>タグが入っています。 <h1>タグの内容は<?php echo $h1; ?> にしており各ページにて <?php $h1 = "内容"; ?> というふうにして、文言は各ページにて変えるというふうにしております。 今回はそこにリンクを各々設定したいのですが、 <h1>タグの場所はインクルードしたヘッダーのデータの中です。 そこにリンクをつけても全ページが同じ リンクになってしまいます。 今の構造は崩さず、各々に違うリンクを入れることは可能でしょうか? それとも、 一つ一つのページにもう一個、<h1>だけが入ったヘッダーを上乗せしていかなければならないでしょうか? お願いします。

    • ベストアンサー
    • HTML