0
$thisFile = str_replace('\\', '/', __FILE__);
$docRoot = $_SERVER['DOCUMENT_ROOT'];

$webRoot  = str_replace(array($docRoot, 'library/config.php'), '', $thisFile);
$srvRoot  = str_replace('library/config.php', '', $thisFile);

これが私がウェブルートとサーバールートを取得する方法です

ウェブルートは私のファイルが属するフォルダ名であり、サーバールートC:/xampp/htdocs/folder_name

いつwebrootとserverrootを使うべきか尋ねたいだけです。

ファイルex:hrefまたはimg srcを参照している場合、Webルートのみが機能し、サーバールートは機能しないことに気付きました。

ただし、ファイルが必要な場合は、例:require_once 'file.php';サーバールートのみが機能し、ウェブルートは機能しません

4

2 に答える 2

1

あなたは物事を複雑にしすぎていると思います。次のようにパスを作成できます。

$_SERVER['DOCUMENT_ROOT'] . "/your/path/here"

require_onceしたがって、スクリプトの先頭にこれを追加する場合は、次のようにします。

require_once($_SERVER['DOCUMENT_ROOT'] . "/your/path/here.php") 

画像を参照するときは、次のことができます。

<img src="/my/path/image.jpg" alt="" />

/それをルートに戻し、そこからパスを構築します。

于 2012-12-10T20:08:45.543 に答える
0

サーバーパスとURLパスを混同しています。

サーバーでは、ファイルはに保存されますがC:/xampp/htdocs/folder_name、Webブラウザーによると、にありますhttp://localhost/folder_name。ブラウザがファイルをロードするとき、ファイルがにあることを認識しませんC:/xampp/htdocs/

注:そこにあるコードはどれも「Webルート」を取得しません。

__FILE__次のように、サーバー上のファイルのパスを返します`C:/xampp/htdocs/include/header.php

$_SERVER['DOCUMENT_ROOT']次のように、ファイルが存在するサーバー上のパスが返されますC:/xampp/htdocs/

「Webルート」を取得するには、を使用する必要があります$_SERVER['SERVER_NAME']example.comこれはあなた(または何でも)を返します。おそらくそれに追加http(s)://する必要があります。

$serverRoot = $_SERVER['DOCUMENT_ROOT'];
$webRoot = ($_SERVER['HTTPS'] ? 'https://' : 'http://') . $_SERVER['SERVER_NAME'];

/Webルートとして使用することもできます。

<img src='http://example.com/images/wall.png" />

<img src='/images/wall.png" />

同等である必要があります。

試してみてくださいvar_dump($_SERVER);、それはあなたにいくつかの楽しい情報を与えるでしょう。

編集dirname「ルートフォルダ」の下に「サブフォルダ」を取得したい場合に使用します。上記はあなたに主な根を与えるでしょう。

$serverPath = dirname(__FILE__); // or __DIR__
$webPath = dirname($_SERVER['PHP_SELF']);
于 2012-12-10T20:17:17.353 に答える