トップ > php 覚え書き > PHP5だとincludeに絶対パスが使えない その対策と代替案

PHP5だとincludeに絶対パスが使えない その対策と代替案

サイドメニューやフッターを全ファイルで共有するのによくphpを利用する。

外部ファイルを読み込むには、

include と require がある。

include文とrequire文の動作は同じだが、

require文はエラー時にはFatal Errorとして扱われ、ファイルの読み込みに失敗した時などには処理が停止してしまいます。つまりページがエラーで表示されません。

これに対してinclude文はページ中に Warningを出力しますが、処理は続行されるのでページは表示されます。

というわけで、個人的には、 include をいつも利用しています。

■ include の使い方

<?php
include "menu.php"; //括弧なし

include('menu.php'); //括弧付き

//変数化する場合。
include $somefile;
?>


ところが、この include

読み込むファイルを絶対パスで指定した場合、

PHPのバージョンが4だと正しく表示されますが、
バージョンが5だとエラーになるようです。 (環境によっては違いがあるかも。)

PHP5だと下記のように書くことができない。

<?php include "http://***.com/***.php"; ?>

これには困りました。

ところが、いろいろ調べていると、


CURL関数というものを利用すると正常に表示させることができました。

本来の用途とは違うのかもしれませんが、
これは使えそうです!


サンプルはこちら


<?php
// 新規 cURL リソースを作成します
$ch = curl_init();

// URL や他の適当なオプションを設定します
curl_setopt($ch, CURLOPT_URL, "http://○○○.com/file.php");
curl_setopt($ch, CURLOPT_HEADER, 0);

// URL を取得し、ブラウザに渡します
curl_exec($ch);

// cURL リソースを閉じ、システムリソースを解放します
curl_close($ch);
?>


もっと良い方法がある場合はぜひご教授ください。

この記事のカテゴリーは「php 覚え書き」です。
関連記事

PHP5だとincludeに絶対パスが使えない その対策と代替案

PHP5だとincludeに絶対パスが使えないので、その対策と代替案。CURL関数を利用。

mb_convert_encoding エラーが出たり出なかったり

auto はいらない Warning: mb_convert_encoding(...

更新履歴

この記事のカテゴリーは「MT(Movable Type) カスタマイズ」です。2008年06月24日に更新しました。

この記事のカテゴリーは「正規表現」です。2008年05月10日に更新しました。

この記事のカテゴリーは「php 覚え書き」です。2008年04月28日に更新しました。

この記事のカテゴリーは「駄文」です。2008年04月27日に更新しました。

この記事のカテゴリーは「html と cssの覚え書き」です。2008年04月19日に更新しました。

カテゴリー
サイト内検索