• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php インクルードincludeした時のパス)

php インクルードincludeした時のパス

このQ&Aのポイント
  • PHPのinclude文によるファイルのインクルード時に、パスの指定で問題が発生しています。
  • ページごとに相対パスが異なるため、ページごとにパスを書き換える必要があるのでしょうか?また、/始まりの絶対パスの書き方は正しいのでしょうか?
  • そして、インクルードしたファイル内での画像ファイルやリンクのパス指定についても、/始まりの絶対パスの書き方が正しいのでしょうか?

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

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

あ、DIRECTORY_SEPARATOR のところは、PATH_SEPARATOR でした。済みません。 こっちの記述が正しいですね。即席でコピーし間違った。 ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR. 'common' ); DOCUMENT_ROOTは、http://localhost/ で表示されるディレクトリーのことなのですが、apache サーバーご利用なら、通常 htdocs か public_html にしますけど。 どこになってますか? common ディレクトリーをおいてる親ディレクトリーだと思って、前回の回答をしたのだけど。 インストール先によって、上位ディレクトリー名は変わるけど、$_SERVER['DOCUMENT_ROOT']にその設定に応じた値が入ってるので、これを使ってDOCUMENT_ROOT以下を、同じに構築すると、ローカルチェック環境でも、本番環境でも書き換えしないで済みます。 DIRECTORY_SEPARATOR や PATH_SEPARATOR も、OSが異なっても、現在実行中のOS環境に応じた値が入ってるので、そのまま持っていけます。

peco33
質問者

お礼

ありがとうございます!! <?php ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR. 'common' ); include_once('header.html'); ?> で無事表示できました。 http://localhost/ で表示されるディレクトリーは 通常 htdocsなんですが、サイトがある親フォルダに変更しております。 ただ実際、表示はできたのですが ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR. 'common' ); がどういう意味なのかがわかりません。 ルート環境の中の基準ディレクトリをcommonに設定し、そこからどこの位置にあるかということでしょうかね?

その他の回答 (1)

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

include_pathを設定してやれば、統一出来るでしょう。 common ディレクトリーは、DOCUMENT_ROOT内ならば、 $_SERVER['DOCUMENT_ROOT']を前方に連結し、以下のようにphpプログラムの先頭で、ini_set する。 または、php.iniや.htaccsessで設定する場合は、ini_get('include_path') .DIRECTORY_SEPARATOR. $_SERVER['DOCUMENT_ROOT']のところは、それぞれそのサーバーの設定データに置き換える必要があります。 <?php ini_set('include_path', ini_get('include_path') .DIRECTORY_SEPARATOR. $_SERVER['DOCUMENT_ROOT'].'/common' ); include_once('header.html'); /* include_pathに指定したディレクトリー内のファイルは、ファイル名だけで指定できる */ /* 内容いろいろ */ include_once('footer.html'); ?> 画像ファイルやcssファイルは、ブラウザが、そのページのurlから相対パスか絶対パスかを判断して呼び出しますので、DOCUMENT_ROOTからの絶対パスで表記すると、そのサーバー内で、同一のファイルを呼び出せます。

peco33
質問者

お礼

<?php ini_set('include_path', ini_get('include_path') .DIRECTORY_SEPARATOR. $_SERVER['DOCUMENT_ROOT'].'/common' ); include_once('header.html');/* include_pathに指定したディレクトリー内のファイルは、ファイル名だけで指定できる */ /* 内容いろいろ */ include_once('footer.html'); ?> で入れてみましたが、確認できませんでした。 (MAMPを使ったアパッチで見てるから?) そもそもDOCUMENT_ROOTとは何でしょうか?

関連するQ&A

専門家に質問してみよう