Domanda

Fa la variabile esistono $_SERVER["DOCUMENT_ROOT"] su IIS in esecuzione PHP? All'inizio ho pensato che questa variabile è Apache specifico e su IIS, è necessario emulare per la manipolazione di stringhe di variabili SCRIPT_NAME e SCRIPT_FILENAME ma ora vedere questa variabile sulla mia installazione di PHP su IIS. E 'lecito ritenere che questa variabile sarà sempre disponibile su IIS.

È stato utile?

Soluzione

E 'lecito ritenere radice doc è sempre disponibile in IIS? No ...

$ _ SERVER [ 'DOCUMENT_ROOT'] non è sempre disponibile su IIS .. deve essere impostato nel file di configurazione ...

Se è configurato sul server si 'potrebbe' usarlo ... Basta assicurarsi che il file di configurazione non cambia - altrimenti si romperà i vostri script ...

Altri suggerimenti

IIS non sempre impostato $ _SERVER [ 'DOCUMENT_ROOT']

Come si imposta in un file di configurazione, in modo che il resto del codice funziona come il server Apache?

Output $ _SERVER per vedere ciò che è dato che si potrebbe essere in grado di utilizzare:

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

In questo caso, lo SCRIPT_FILENAME e SCRIPT_NAME sono impostati.

Modifica il codice sottostante per usare ciò che è dato per ottenere 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']);
}

Ora è possibile utilizzare $ _SERVER [ 'DOCUMENT_ROOT'] normalmente:

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

ho risolto semplicemente riferimento il mio principale del web, e l'impostazione come una delle mie variabili.

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

Il codice seguente ottiene la directory di lavoro corrente di PHP, che sarà la directory contenente il file che si sta eseguendo questo su. chdir('/') va alla radice del ovunque PHP in grado di operare, nel mio caso C:\. web root Il mio esempio del server web è in C:\example-web-server, in modo da poter fare riferimento a esso in PHP in questo modo: /example-web-server.

Una volta che hai il percorso per PHP, è possibile impostare come variabile e chiamarlo. Userò un esempio di include() di C:\example-web-server\testing\index.php:

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

So che questo è un vecchio thread, ma non può essere l'unico che necessitano di una soluzione per questo.

Questo è quello che ho fatto in cima index.php:

if(!isset($_SERVER["DOCUMENT_ROOT"]))
{
    $_SERVER["DOCUMENT_ROOT"]=getcwd();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top