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

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

ただいまの
回答率

89.22%

WordPressにて、include_once が出来ません。

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,313

k.nomura

score 12

WordPressにて記事を出力し、それをincludeしようとしたのですが、
上手くいきません。
エラーが三つ出ていまして。。

Warning: include_once(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in ~
Warning: include_once(http://~): failed to open stream: no suitable wrapper could be found in ~
Warning: include_once(): Failed opening 'http://~' for inclusion (include_path='.:/opt/php-7.2.6/data/pear') in

と出力されてしまいます。
他のページのincludeは、上手く行っているので、includeが出来ないサーバーや、環境ではないと思います。

ただ、うまくいっているページは、既にファイルがあり、WordPressで書き出されたファイルではありません。
WordPressで書き出されたページをincludeするのは、include_once() 以外の方法が必要なのでしょうか?

ご教授をお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • CHERRY

    2019/02/26 16:21

    どのようなプログラムを記載したのか 具体的なコードを質問を編集して、記載していただけないでしょうか?

    キャンセル

  • k.nomura

    2019/02/26 16:27

    失礼しました。明記したコードは下記の通りになります。
    <?php
    include_once(TEMPLATEPATH.'/calendar2/');
    ?>

    キャンセル

  • CHERRY

    2019/02/26 16:31 編集

    > include_once(TEMPLATEPATH.'/calendar2/');

    include_once の中が、` / ` で終わっているのでディレクトリを指定していて、ファイル名が抜けているように見えますがファイル名は何ですか?

    キャンセル

  • k.nomura

    2019/02/26 16:40

    WordPressで記事を出力していますので、そのページにファイル拡張子は有りません。
    テンプレートは、calendar.php を読み込んでいます。

    キャンセル

回答 3

checkベストアンサー

+1

他のページのincludeは、上手く行っているので、includeが出来ないサーバーや、環境ではないと思います。

ただ、うまくいっているページは、既にファイルがあり、WordPressで書き出されたファイルではありません。

他の部分は、ファイルがあるのですね。

そうであれば、エラーメッセージ通りで、

Warning: include_once(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in ~
Warning: include_once(http://~): failed to open stream: no suitable wrapper could be found in ~
Warning: include_once(): Failed opening 'http://~' for inclusion (include_path='.:/opt/php-7.2.6/data/pear') in

allow_url_include が、 0 (OFF) になっているというメッセージなので、php.ini 等で、 allow_url_include を有効に設定してください。


追記を受けて...

明記したコードは下記の通りになります。
<?php
include_once(TEMPLATEPATH.'/calendar2/');
?>

まず、include_once は、実在するファイルしか読み込めません。

TEMPLATEPATH は、通常、テンプレートディレクトリのファイルパスが定義されているので、/var/www/example.jp/wp-content/themes/twentyseventeen-child のような感じになると思うのですが...

試しに、wordpress の twentyseventeen の子テーマで page-xxx.php を作成して、

<?php
echo "TEMPLATEPATH";
include_once(TEMPLATEPATH.'/css/');
?>


のように試しにディレクトリを include させてみたところ、

include_once(/var/www/example.jp/wp-content/themes/twentyseventeen-child/css/): failed to open stream: No such file or directory in /var/www/example.jp/wp-content/themes/twentyseventeen-child/page-xxx.php on line 29
include_once(): Failed opening '/var/www/example.jp/wp-content/themes/twentyseventeen-child/css/' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/example.jp/wp-content/themes/twentyseventeen-child/page-xxx.php on line 29

というエラーになりました。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/26 16:55

    サーバーの php.ini設定 を修正し、allow_url_include を on にしましたら、
    確かに、1つ目のエラーメッセージは消えました。
    ただ、残りの二つが消えません。

    Warning: include_once(/home/~/): failed to open stream: No such file or directory in ~
    Warning: include_once(): Failed opening '/home/~' for inclusion (include_path='.:/opt/php-7.2.6/data/pear') in /home/~

    原因が解りますでしょうか?

    キャンセル

  • 2019/02/26 17:01 編集

    エラーの原因は、ファイルが存在していないからです。

    > Warning: include_once(/home/~/): failed to open stream: No such file or directory

    エラーメッセージで、表示されている `/home/~/` は、存在していますか?


    WordPress の生成する コンテンツを読み込みたいのであれば、

    include_once 'http://example.com/calendar2/&#039;;

    のように URL を指定して読み込むようにしてください。

    キャンセル

  • 2019/02/26 17:23

    > エラーの原因は、ファイルが存在していないからです。

    こちらのアドバイスで解りました!
    固定ページを読み込む際は、include_once を使うのではなく、
    下記の関数を使う事で解決致しました。

    $page_info = get_page_by_path('固定ページ名');
    $page = get_post($page_info);
    echo $page->post_content;

    ありがとうございました!

    キャンセル

  • 2019/02/26 17:27

    ページの中身が取得できたらよかったのですね。

    HTML の出力を取り込みたいのだと思っていました。

    キャンセル

+1

WordPressで出力した記事(ということはHTMLですよね?)をincludeする目的がわからないのですが…
とりあえず、

Warning: include_once(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in ~


とあるように、サーバの設定によってURLでのincludeが禁止されているようです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/26 16:44

    いえ他のページも同様に、下記のような書式です。
    include_once(TEMPLATEPATH.'/_tmp/meta.php');

    キャンセル

  • 2019/02/26 16:51

    include_once(TEMPLATEPATH.'/_tmp/meta.php');
    はファイルシステム的に読み込みに行きますよね。
    もしこれと同じように問題の部分もincludeしているならば、WordPressで出力された状態では読み込めないはずです。(PHPのソースコードをそのままincludeするだけ)

    また、TEMPLATEPATHを用いているのであれば、httpで始まるURLの展開もされないはずです。しかしエラーメッセージではhttp://で始まるものをincludeしようとしてエラーが起こっています。

    コンピュータは嘘をつかないという大前提で考えれば、質問者様がどこか勘違いをされているんじゃないかと思われますが…

    キャンセル

  • 2019/02/26 17:24

    include_once を使わずに、
    $page_info = get_page_by_path('固定ページ名');
    を使う事で解決致しました。ありがとうございました!

    キャンセル

0

エラーの原因は、ファイルが存在していないからです。

こちらのアドバイスで解りました!
固定ページを読み込む際は、include_once を使うのではなく、
下記の関数を使う事で解決致しました。

$page_info = get_page_by_path('固定ページ名');
$page = get_post($page_info);
echo $page->post_content;

ありがとうございました!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/26 18:12

    「WordPressにて記事を出力し、それをincludeしようとしたのですが」
    「WordPressで書き出されたページをincludeするのは」
    これらの質問文から、WordPressにて出力されたHTMLが必要なのかと思っていました(おそらくCHERRYさんも)。
    また、includeはPHPスクリプトを読み込むためのものなのに、とも思っていました。

    最初から「固定ページの中身を読み込みたい」と書いてくださっていれば、もっとスムーズに回答が集まっていたかと思います。

    キャンセル

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

  • ただいまの回答率 89.22%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る