インターネットの調査に何日も費やしましたが、理解して実装できる答えが見つかりません。
_include_once
_ファイルを使用して、localhostと実際のサーバーの両方でWebサイトを適切に表示できるWebサイトがあります。
以前に_$_SERVER['DOCUMENT_ROOT']
_を使用しましたが、localhostでは機能しないため、Webサイトを更新して変更を加えるのは困難です。
私がしたいのは、ルートフォルダーがhtdocs
または_public_html
_と呼ばれ、そこからファイルを「開始」することを伝えることができるconfig.phpファイルを作成することです。 。
または、インクルードパスを機能させる他の方法はありますか?
たとえば、 dirname(__FILE__)
、___DIR__
_など。ただし、どのように機能するか、コードのどこに書き込むかなどは説明しませんでした。答えの一部を見つけるのに少しうんざりしていて、それから輪になって走り回り、隙間を「埋める」だけです。私はPHPの専門家ではありません。それを使って私の生活を少し楽にしようとしています。
dirname(__FILE__)
と___DIR__
_は同じで、___DIR__
_はPHP 5.3
これらは、「呼び出し元のファイルのパス」を示すために使用されます。
URL:http://localhost/test/a.php DIR:--NIX /var/www/test/a.php --WIN D:\ lamp\www\test\a.php // a.php's inside <?php echo __DIR __;
Linuxでは次のようになります:_/var/www/test
_
したがって、すべてのプロジェクトで設定パラメータが必要な場合は、config.phpで定義し、両方のファイル名を含める場所で使用します。
./ config.php index.php header.php footer.php /lib foo.php /tmp bar.php
./config.php define('ROOT', __DIR__ .'/');
./index.php include_once(ROOT .'header.php'); ... include_once(ROOT .'footer.php');
つまり、_tmp dir
_で使用します
./tmp/bar.php include_once(ROOT .'lib/foo.php');
[〜#〜] update [〜#〜]
_// config.php
<?php
define("ROOT", __DIR__ ."/");
_
そのため、これを_index.php
_に使用して_banner.php
_を含め、_banner.php
_は_./banners/banner.php
_で待機しています。
_// index.php and the very first line!
<?php
include_once("config.php");
?>
// some html stuff
// ...
<?php include_once(ROOT ."banners/banner.php"); ?>
// some more html stuff
// ...
_
そのため、最初に必要な場所にconfig.phpを含める必要があります。
これは必要な限り基本的なことだと思います...
[〜#〜] update [〜#〜]
あなたの問題はPHP include
システムではなく、とにかく質問です... :)
イメージパスが変更されている場合(修正されていない場合)、次のようにできます。
_// config.php
define("ROOT", __DIR__ ."/");
define("HTTP", ($_SERVER["SERVER_NAME"] == "localhost")
? "http://localhost/your_work_folder/"
: "http://your_site_name.com/"
);
// banner.php
<img src="<?php print HTTP; ?>images/banner.gif">
_
私は通常、インクルードディレクトリにconfig.phpを記述し、次の行を設定します。define('BASE_PATH', str_replace('/include', '', dirname(__FILE__)));
( "/ includeは、config.phpファイルがあるディレクトリであれば、ルートディレクトリにある場合は、define('BASE_PATH', dirname(__FILE__));
)を使用できます。その後に他のファイルを含める場合は、include_once(BASE_PATH . '/directory/file.php');
を使用します。
注:この概念は、決して私にとって独創的なものではありません。
現在の作業ディレクトリを取得/表示するために、phpにはそのための組み込み関数があります
echo getcwd() . "\n";
これにより、現在実行中のphpファイルの現在のディレクトリが表示されます。
現在の作業フォルダーを返す getcwd()
という関数があります。スクリプトの最初にこれを呼び出すと、通常はdefine()
を使用して定数に保存できます。
define('PROJECT_ROOT', getcwd());
インクルードパスを変更することもできます。たとえば、
$dir = dirname(__FILE__);
set_include_path($dir . '/../library' . PATH_SEPARATOR . $dir . '/../engine' . PATH_SEPARATOR . get_include_path());