人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでrequire読込みを行う場合の質問です。
requireで読込むようにした場合、読込んだ部分のテーブル構成(html)が崩れたり、require行以前に値がセットされているはずの変数が表示されないといったことが過去に何度かありました。
その原因は解決しないまま、仕方なくrequireを使用しないやり方に変えて、その場を凌いできましたが、今回いろいろ試してみました。

そして気づいたのですが(根本原因とは関係ない、副次的な部分ですが)、読込まれる側のソースを変更して、ブラウザ更新後、「表示→ソース」をみると、変更前のコードのままでした。これに対し読み込み側のコードは変更するとすぐに画面に反映されます。
eclipseを使っており、「リフレッシュ」などを行っても、改善しません。
このようなことがおこる原因は何が考えられますか?


●質問者: kon39392
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

質問者から

ちなみにこれに気付いたきっかけは、テスト環境で動作していたものを本番環境で動かしてみたときに、require("getData.php");という記述で読み込めなくなったことがきっかけです。ドキュメントルート指定の記述に変更して読み込めるようになったものの、上述したように値がセットされないなどの現象に出くわしました。
この違いがどこで生じるかについても何かわかりましたらお願いします。


1 ● Cherenkov
●34ポイント

ctrl+f5でスーパーリロードを行なっても更新されませんか?
metaタグでキャッシュを作らない属性を加えるとか


2 ● tobeoscontinue
●33ポイント

http://php.net/manual/ja/function.include.php
requireで指定するファイルが絶対パス、カレントディレクトリからの相対パス以外では
include_pathを使って検索されます。そのため意図しないファイルがrequireされているのでは
無いでしょうか。

requireは実行のたびに評価されるので副作用が出ているのでは無いでしょうか。一度で十分ならrequire_onceの方がいいでしょう。

ありがちなのはファイルの先頭や末尾に空白文字が入っていてwarnningが出るというのがあります。


3 ● taroe
●33ポイント ベストアンサー

PHPソース
・PHPのコードをキャッシュして高速化するようなツールを使用している
・Apacheなどのサーバー側でキャッシュする仕組みを利用している
・ブラウザのキャッシュが存在する
ブラウザ

PHPソースから、ブラウザまでくる間に、どこかでキャッシュ機構が有効で
完全にクリアされないから反映されないだけだと思います。

ブラウザでキャッシュクリアしても、Apacheなどのキャッシュ機構が働いているとダメな場合があります。サーバー側も再起動するなりすれば、反映されると思います。

> eclipseを使っており、「リフレッシュ」などを行っても、改善しません
サーバー側もリフレッシュ動作をしてるのなら、改善するはずです。

>、require("getData.php");という記述で読み込めなくなったことがきっかけです。ドキュメントルート指定の記述に変更して読み込めるようになったものの、上述したように値がセットされないなどの現象に出くわしました。

PHPの内部の変数の話なのか
PHPが出力されたHTMLソースについて話してるのか
ごちゃ混ぜになってる感じで、

もう少し整理しないと、原因の特定はできないと思いますよ。


>require行以前に値がセットされているはずの変数が表示されないと

明示的に変数をグローバル変数などしないとダメな場合もあります。

http://php.net/manual/ja/language.variables.scope.php

変数のスコープの問題ですね。

requireといっても
単にテキストでソースをマージしてるのと同じですよ。


質問者から

ありがとうございました。
どれも大変参考になりました。

相変わらず根本原因を突き止められていませんが、取り急ぎ下記で凌ぎました。
・eclipse使用をやめて、テキストエディタを使用
⇒すぐに反映されるようになりました。
・requireで呼び出すファイル内の変数はではなくとしました。
⇒値がきちんと表示されました。

またじっくり調べてみます。
ご回答ありがとうございました。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ