1

私が作成した Web サイトで非常に奇妙な問題が発生しました。

基本的に、私は「貧乏人のルーター」で構築されたサイトを持っているので、site.com/contact に行くと、いくつかの変数セットと私のサイトのスケルトン (メイン構造)。スケルトンの内部には、特定のページのコンテンツを取得する別のインクルードがあります。これは、前述の index.php ファイルに設定された変数によって指定されます。

問題は、この連絡先ページにアクセスすると、送信されると電子メールを送信することになっている連絡先フォームがあることです。すべて問題ないように見えますが、連絡先ページのコンテンツ ファイルにある PHP は実行されません。そこで、コンテンツファイルがスケルトンファイルのディレクトリよりも深い場合、動作しないという問題に絞り込んだようです。ディレクトリがどのようになっているのかをお見せしましょう:

/
--skeleton.php

--/content
----contact.php

--/contact
----index.php

つまり、index.php -> skeleton.php -> contact.php となります。

ルート ディレクトリに配置しない限り、contact.php の PHP が機能しません。なぜこれを行うのですか?私がやっていることは最も理想的な方法ではないことはわかっていますが、それは私が助けを求めていることではありません。ファイルがこのように編成されているときに PHP が実行されない理由を知りたいだけです。

//INDEX.PHP

$content = 'contact.php';

include('../skeleton.php');
//SKELETON.PHP

include($site . 'content/' . $content);
//CONTACT.PHP

if($send_info == 1) {
    // send email
} else {
    // show form
}
4

1 に答える 1

1

これ以上コードを表示しない場合、1 つの提案として、インクルード ファイルが正しくないパスを参照していることが考えられます。skeleton.php と contact.php ファイルが読み込まれていることをご存知ですか? 各ファイルにデバッグ行をいくつか入れて、出力メッセージをエコーし​​て、ファイルがロードされ、どこに到達したかを示すことができますか? include('filename') を require('filename') に変更して、実際に含まれているかどうかを確認できますか?

于 2013-10-30T19:58:35.413 に答える