質問

どうしますか $_SERVER["DOCUMENT_ROOT"] PHPを実行しているIISに変数が存在しますか?以前は、この変数はApache固有であり、IISでは、文字列の操作によってそれをエミュレートする必要があると思いました SCRIPT_NAMESCRIPT_FILENAME 変数ですが、IISのPHPインストールにこの変数が表示されました。この変数が常にIISで利用可能であると仮定するのは安全ですか?

役に立ちましたか?

解決

Doc Rootが常にIISで利用可能であると想定しても安全ですか?いいえ...

$ _SERVER ['Document_Root']は常にIISで利用できるとは限りません。

サーバーで構成されている場合は、使用できます。構成ファイルが変更されないことを確認してください。

他のヒント

iisは常に$ _server ['document_root']を設定するとは限りません

構成ファイルにどのように設定しますか?そのため、残りのコードはApacheサーバーのように機能しますか?

$ _Serverを出力して、使用できるものが与えられたものを確認してください。

echo "<br>_SERVER:<br><pre>";
print_r($_SERVER);
echo "</pre><br><br>_ENV:<br><pre>";
print_r($_ENV);
echo "</pre><br><br>";

この場合、script_filenameとscript_nameが設定されています。

以下のコードを変更して、document_rootを取得するために与えられたものを使用します。

if (!isset($_SERVER['DOCUMENT_ROOT']) || $_SERVER['DOCUMENT_ROOT'] === '') {
    $_SERVER['DOCUMENT_ROOT'] = substr($_SERVER['SCRIPT_FILENAME'], 0, -strlen($_SERVER['SCRIPT_NAME']));
    putenv('DOCUMENT_ROOT='.$_SERVER['DOCUMENT_ROOT']);
}

これで、$ _server ['document_root']を通常使用できます。

$docroot = getenv("DOCUMENT_ROOT"); 
include_once "$docroot/folder/yourfile.php"; 

Webルートを参照し、自分の変数の1つとして設定するだけで解決しました。

<?php
echo getcwd();
chdir('/');
echo getcwd();
chdir('/example-web-server');
echo getcwd();
?>

次のコードは、PHPの現在の動作ディレクトリを取得します。これは、これを実行しているファイルを含むディレクトリです。 chdir('/') 私の場合、PHPが動作できる場所のルートに行きます C:\. 。私の例WebサーバーのWebルートはにあります C:\example-web-server, 、そのため、次のようにPHPで参照できます。/example-web-server.

PHPのパスを取得したら、変数として設定して呼び出すことができます。の例を使用します include()C:\example-web-server\testing\index.php:

<?php
$webroot = "/example-web-server";
include("{$webroot}/testing/index.php");
?>

私はこれが古いスレッドであることを知っていますが、これに解決策を必要とするのは私だけではありません。

これは私がindex.phpの上でしたことです:

if(!isset($_SERVER["DOCUMENT_ROOT"]))
{
    $_SERVER["DOCUMENT_ROOT"]=getcwd();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top