2016-09-03 13 views
0

まず第一に、同じカテゴリで尋ねられる疑問がたくさんありますが、私が直面している問題はありません。だからこそ私はこの質問を開きました。そして、第二にPHP開発者ではありません。ヘッダーとフッターの..PHPで "../"を使用して1レベル上に移動していませんか?

これは私のディレクトリ構造です:

XAMPP>のhtdocs>ウェブサイト> "フォルダ" と "ファイル"

"フォルダ" CSSある、SASS、JS、画像とプロジェクト。 「プロジェクト」フォルダがprojecta.phpを持っていると、index.phpのheader.phpのある 「ファイル」projectb.php、footer.phpので、上記の

をmenu.php私のフォルダ構造..ですすべてが素晴らしいとき働いていますファイルはルートディレクトリにあります。たとえば、ヘッダー、メニュー、フッターなどのPHPページがインデックスページに入っています。

"project"には、ヘッダー、フッター、フォルダので、私はそれが下の絵を見て..動作していないこの

<?php include "../footer.php"; ?> 

を試してみました

enter image description here

CSSファイルは、ここで詳細は...

を実行していないように見えますヘッダは

<title><?php echo $page_title; ?></title> 
<meta name="description" content="<?php echo $page_des; ?>"> 
<meta property="og:title" content="<?php echo $page_title; ?>" /> 
<meta property="og:description" content="<?php echo $page_des; ?>" /> 
<meta property="og:type" content="website" /> 
<meta property="og:url" content="http://www.example.com/<?php echo $page_url; ?>" /> 

をsnippit、ここメニューsnippitは

です
<ul> 
<a <?php if ($page_nav == 'index.php') { ?>class="active"<?php } ?> href="index.php"><li><h2 class="mt">Home</h2><i>Go to</i></li></a> 
<a <?php if ($page_nav == 'about.php') { ?>class="active"<?php } ?> href="about.php"><li><h2 class="mb">About</h2><i>Me</i></li></a> 
<a <?php if ($page_nav == 'projects.php') { ?>class="active"<?php } ?> href="projects.php"><li><h2 class="mt">Work</h2><i>My</i></li></a> 
<a <?php if ($page_nav == 'contact.php') { ?>class="active"<?php } ?> href="contact.php"><li><h2 class="mb">Contact</h2><i>Me</i></li></a> 
</ul> 

、これは私が私のページにヘッダとメニューを含める方法です、

<?php 
$page_title = "title a"; 
$page_des = "description a"; 
$page_url = "index.php"; 
include "header.php"; 
?> 

<?php 
$page_nav = basename($_SERVER['SCRIPT_NAME']); 
require "menu.php"; ?> 

ので、誰かが有効な答えを見つけるために助けてください?はい、私は知っている、あなたたちは、上記のコードではミスをたくさん見つけるでしょう..しかしthatsの大丈夫..私は答えを必要とする...おかげで...

は答えを見つけた:すべての人のためのすべての最初のおかげで私は下のすべてを試してみましたが、何も動作しません..私はこのコードがうまく動作することがわかりました。しかし、事はそれがちょっと回答のように見えます@ダン・カスウェル@Scott Dallas ..私はアイディアを持っていないので、なぜ答えが得られず、なぜこの作品が..!しかし、とにかく誰にも感謝しています。ここに答えを貼り付けると誰かが役に立つと思うかもしれません..!

<?php 
$path = $_SERVER['DOCUMENT_ROOT']; 
$path .= "/your directory/common/header.php"; 
include_once($path); 
?> 
+1

ファイルを含めると、すべての参照はファイルを含むファイルと同じレベルになります。したがって、インクルードファイルで参照しているかのように、インクルードされたファイルのcssファイルを参照する必要があります。とにかく、いくつかのbase_url()関数を使うとうまくいくでしょう。 – Phiter

答えて

0

PHPインタプリタがちょうどpublic_htmlまたはhtdocs(サイトルート)ディレクトリ以外のファイルシステムはるかに大きなアクセスを持っているので、この問題があります。ルート上のすべてのファイルとフォルダにアクセスできます。実際の現在の作業ディレクトリを確立することを困難にする可能性があります。 PHPは失敗する前にファイル参照の現在の作業ファイルの場所をチェックします。()何も指定されていない場合

ファイルが含まれ、指定されたファイルパスに基づいて、またはされ、 のinclude_pathが指定含めるためPHPドキュメントを参照してください。ファイルが include_pathに見つからない場合、インクルードすると呼び出し元のスクリプトの ディレクトリと現在の作業ディレクトリが最後にチェックインされます。

私が通常使用する解決策は、PHP $_SERVER変数を使用してサーバドキュメントルートを定義することです。この解決策はではない完全にばかばかしい証明は、サーバー環境の文書ルート構成に依存するためです。私はこれもいらいらすることができることを見出した

include($_SERVER['DOCUMENT_ROOT'] . '/footer.php'); 

あなたはpublic_htmlhtdocsフォルダは、例えば、あなたのように、各ウェブサイトのためのサブフォルダを含むことができ、ローカルサーバー上で作業しているです。 $_SERVER['DOCUMENT_ROOT']は、ほとんどの設定でサーバの「public」ルートへの絶対パスを返します。ではなく、あなたのウェブサイトのサブフォルダです。つまり、インクルードパスにWebサイトフォルダを追加する必要があります。

include($_SERVER['DOCUMENT_ROOT'] . 'your_website/footer.php'); 

これは、それがウェブサイトを運用サーバーにアップロードされたとき、あなたがウェブサイトのための追加のサブフォルダを持っていない可能性があることを意味するので、かなり迷惑なので、これは変更する必要があります含まれています。

明らかに、これは本当の痛みではなく、偉大な練習ではありません。私は、この問題の解決策が何であるかはわかりませんが、よりよい方法があると確信しています。うまくいけば、これはあなたがうまく行くのを助けることができ、誰か他の人が(私たちの両方)より良い練習方法を提供することができます。

+0

コメントをいただきありがとうございます。私はあなたが言ったように試みたが、運がない、それはまだ同じです..! –

+0

これは厄介なことですが、 'your_website'フォルダ名も追加してみましたか?たぶん、あなたのインクルードの結果をエコーバックするには、インクルード括弧の間にすべてをコピーし、最初に「echo」を、最後にセミコロンを追加します。それをここに投稿すると、インクルードが見ているパスを確認できます。 –

0

これは..あなたは、私が新しいプロジェクト始めているとき、私はすべての私のファイルの先頭にこれをしたい

$_SERVER['DOCUMENT_ROOT'] 

使用することができるだけでなく、私を悩ます:では

<?php include($_SERVER['DOCUMENT_ROOT'] . "/inc/config.php"); ?> 

を私の設定ファイル、私は多くの変数を私が私のプロジェクト全体で使用する予定の有用な値として保存するので、$ _SERVER ['DOCUMENT_ROOT']を入力し続ける必要はありません

または私のような怠け者$ _SEを使用しますあなたが好きなだけRVER ['DOCUMENT_ROOT']:

+0

不幸にも、以前と同じエラーが発生します。 これは私が試したものです '<? PHPのインクルード($ _SERVER ['DOCUMENT_ROOT']。 "/emji/core/header.php"); ?> ' これ以降、<?php include($ _SERVER [' DOCUMENT_ROOT ']。 "/core/header.php"); ?> 'xamppの絶対ルートフォルダに戻る> htdocs .. 実際の問題は何ですか? –

関連する問題