2

インクルード ファイルで定義された変数identity.phpを、 parent.phpと呼ぶ親ファイルに渡したいと思います。相対パスを介してidentity.phpを含めると、parent.phpファイルで変数を使用できます。(アプリケーション ルートへの) 絶対パスを介してidentity.phpをインクルードすると、機能しません。どうしてこれなの?

ファイル: identity.php

$g_groupid = 2;

ファイル:parent.php

include('absolute_path_to_identity.php');
echo $g_groupid; //NOTHING!

しかし...
ファイル:parent.php

include('../../identity.php'); //relative path to include file 
echo $g_groupid; //echos 2 as expected

相対インクルードと絶対インクルードの両方で表示される「identity file is included メッセージ」( identity.phpファイル内から) をエコーすることにより、両方のケースで identity.php が含まれていることを確認しました。この動作の原因は何ですか?

4

4 に答える 4

0

realpath()を使用してみましたか?

require_once(realpath('../../identity.php'));

また、エラー報告がまだオンになっていない場合はオフにすることをお勧めします。これにより、ファイルが実際に含まれていることを確認し、これに関する詳細情報を取得できます。これをファイルの先頭に追加します。

ini_set("display_errors","On");
error_reporting(E_ALL);
于 2012-06-17T11:04:53.023 に答える
0

絶対パスが機能していると確信していますか?

同様の問題があり、この場合は常にDOCUMENT_ROOTを介したフルパスを使用します

include($_SERVER['DOCUMENT_ROOT']."/your_file_path.php");
于 2015-11-15T00:18:53.813 に答える
0

これは、「絶対パス」が次のような URL のように聞こえます。http://www.example.com/folder/identity.php その場合、PHP は HTTP を使用して Web サーバーからコードをフェッチするため、ファイルが含まれる前にすべての PHP コードが評価されます。

echoこれにより、トラブルシューティングで説明した動作も得られます。

「絶対パス」はフォーム上にあり/home/user/public_html/folder/identity.php、URL とは異なります。


このことを考慮:

アイデンティティ.php

<?php
echo 'Is included';
$g_groupid = 2;
?>

PHP インタープリターによって評価されると、次の生のテキストが生成されます。

Is included

その生のテキストparent.phpに含めると、その生のテキストにはタグがないため、PHPコードのない生のHTMLであるかのように動作し<?phpます。次に、このidentity.php を検討してください。

<?php
echo 'Is included <?php $g_groupid = 3; ?>';
$g_groupid = 2;
?>

これにより、次のようになります。

Is included <?php $g_groupid = 3; ?>

現在、 parent.phpでどのような結果が得られますか? $g_groupid2または3?

于 2012-06-17T11:02:05.697 に答える
-3

うーん、試してください:

include('absolute_path_to_identity.php');
global $g_groupid;
echo $g_groupid;
于 2012-06-16T11:53:45.760 に答える