0

私は答えを探しましたが、うまくいけば、それを見逃したり、繰り返したりしていませんが、ここにあります. 私は2つのファイルを持っています:

/var/www/index.php

/var/www/include/php/header.php

インデックスにはheader.phpファイルが含まれています。ヘッダー ファイルを 2 レベルまでトラバースできるようにして、/include/css/index.css. ここに問題があります。ヘッダーは次のようなファイルにも含まれています

/var/www/sub/page.php

../../そのため、phpファイルの場所が変わるため、単純に使用できません。使ってみ$_SERVER['PHP_SELF']ましたが、ヘッダーファイルを含むphpファイルの場所によって変わります。私も試してみdirname(__FILE__)ましたが、それにより、インクルードの/var/www/複雑さを引き起こす部分が得られます。

基本的に、それを含むphpスクリプトからではなく$_SERVER['PHP_SELF']、含まれているheader.phpファイルからの値が欲しいです。ファイルの場所がめちゃくちゃになることを心配することなく、どこにでも投稿できるようにサイトをモジュール化したいと考えています。これを行う簡単な方法はありますか?

4

2 に答える 2

2

__DIR__任意のファイルから相対的にファイルをインクルードできるようにするには、定数を使用する必要があると考えてください。しかし、次のようなルートファイルシステムパスの定数を定義することをお勧めします

define( 'FS_ROOT', 'root path here' );

そして、この定数によって相対的にファイルをインクルードするとき。また、使用する重要なフォルダーごとに定数を追加できます。パスを変更する場合は、いくつかの定数値を変更するだけで済みます

于 2013-04-10T17:30:19.357 に答える
1

あなたのコメントに基づいて、それはあなたのためのインクルードであり、CSS基本的にあなたのPHPファイルがどこにあるかを心配する必要はありません.サーバーの観点から(Web側):

<link rel="stylesheet" type="text/css" href="/include/css/index.css">

/include/cssアプリのフォルダー内のファイルの場合(Web 公開)

アップデート:

更新されたコメントに従って、アプリの変数 (config) を保存し、CodeIgniter のように関数を呼び出す必要があります。

$domain_url= "http://".$_SERVER['HTTP_HOST'];
$domain_url.= tr_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);

function base_url($url){
    return $domain_url + $url;
}

echo base_url("include/css/index.css");

参照: http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html

于 2013-04-10T17:44:00.890 に答える