Question

Est-ce que la exist variable de $_SERVER["DOCUMENT_ROOT"] sur IIS en cours d'exécution PHP? Plus tôt je pensais que cette variable est spécifique et Apache sur IIS, vous devez imiter par la manipulation de chaînes de variables SCRIPT_NAME et SCRIPT_FILENAME mais je vois maintenant cette variable sur mon installation de PHP sur IIS. Est-il raisonnable de supposer que cette variable sera toujours disponible sur IIS.

Était-ce utile?

La solution

Est-il sûr de supposer racine doc est toujours disponible dans IIS? Non ...

$ _ SERVER [ 'DOCUMENT_ROOT'] est pas toujours disponible sur IIS .. il doit être défini dans le fichier de configuration ...

S'il est configuré sur votre serveur, vous « pouvez » utiliser ... Assurez-vous que votre fichier de configuration ne change pas - sinon vous casser vos scripts ...

Autres conseils

IIS ne définit pas toujours $ _SERVER [ 'DOCUMENT_ROOT']

Comment ça définissez-vous dans un fichier de configuration, de sorte que le reste de votre code fonctionne comme sur des serveurs Apache?

Sortie _SERVER $ pour voir ce qui est donné que vous pourriez être en mesure d'utiliser:

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

Dans ce cas, la SCRIPT_FILENAME et SCRIPT_NAME sont réglées.

Modifier le code ci-dessous pour utiliser ce qui est donné pour obtenir 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']);
}

Maintenant, vous pouvez utiliser $ _SERVER [ 'DOCUMENT_ROOT'] normalement:

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

Je l'ai résolu simplement en faisant référence à ma racine Web, et le définir comme un de mes propres variables.

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

Le code suivant obtient le répertoire de travail actuel de PHP, qui sera le répertoire contenant le fichier que vous utilisez ce sur. chdir('/') va à la racine où PHP peut fonctionner, dans mon cas C:\. racine web de mon exemple serveur Web est à C:\example-web-server, donc vous pouvez référencer en PHP comme ceci: /example-web-server.

Une fois que vous avez le chemin pour PHP, vous pouvez le définir comme une variable et l'appeler. Je vais vous donner un exemple d'un include() de C:\example-web-server\testing\index.php:

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

Je sais que c'est un vieux fil, mais je ne peux pas être la seule ayant besoin d'une solution pour cela.

est ce que je l'ai fait au-dessus de index.php:

if(!isset($_SERVER["DOCUMENT_ROOT"]))
{
    $_SERVER["DOCUMENT_ROOT"]=getcwd();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top