$_SERVER['DOCUMENT_ROOT']
résultats
/usr/local/Apache/htdocs/
est-il possible d'obtenir
/home/user/public_html/
Le problème est que je dois écrire un script qui peut être dans le dossier public_html ou un sous-dossier du dossier public_html. Le script doit enregistrer les fichiers téléchargés dans un dossier dans le répertoire public_html (par exemple, les images). En d'autres termes, disons que mon fichier est test.php et que le chemin d'accès est
/home/user/public_html/test/test.php.
Et il y a un dossier
/home/user/public_html/images
où les fichiers téléchargés via test.php doivent être enregistrés. Je ne sais pas où le fichier test.php sera exécuté. Par exemple, il peut être au niveau du chemin
/home/user/public_html/test/another-dir/test.php
Comment obtenir le chemin d'accès au dossier images sans savoir où sera le fichier test.php?
quelque chose que j'ai trouvé aujourd'hui, après avoir lu cette question et poursuivi mon googlesurf:
https://docs.joomla.org/How_to_find_your_absolute_path
<?php
$path = getcwd();
echo "This Is Your Absolute Path: ";
echo $path;
?>
travaille pour moi
Où se trouve le fichier que vous exécutez? S'il se trouve dans votre dossier html public, vous pouvez faire echo dirname(__FILE__);
Supposons que show_images.php
Se trouve dans le dossier images
et que la racine du site est public_html
, Donc:
echo dirname(__DIR__); // prints '/home/public_html/'
echo dirname(__FILE__); // prints '/home/public_html/images'
mettez n'importe quel fichier sur les répertoires que vous vouliez trouver, dans ce cas, placez 'root' dans public_html
/home/user/public_html/root <- note that 'root' is not a folder (you can use root.txt if u want)
Et utilisez cette fonction
function findThis($get){
$d = '';
for($i = 0; $i < 20; $i++){//this will try 20 times recursively on upper folder
if(file_exists($d.$get)){
return $d;
}else{
$d.="../";
}
}
}
et obtenez la valeur en l'appelant
$pathToRoot = findThis('root');
Et il retournera, par exemple le dir du script php est
/home/user/public_html/test/another-dir/test.php
donc $ pathToRoot sera
$pathToRoot => "../../../"
Est-ce celui que tu veux ??
Chaque fois que vous voulez n'importe quelle sorte d'informations de configuration, vous pouvez utiliser phpinfo()
.
Par curiosité, pourquoi n'utilisez-vous pas simplement l'URL pour ledit dossier?
En supposant que le dossier ne change jamais d'emplacement, ce serait le moyen le plus simple de le faire.
C'est super vieux, mais je suis tombé dessus et cela a fonctionné pour moi.
<?php
//Get absolute path
$path = getcwd();
//strip the path at your root dir name and everything that follows it
$path = substr($path, 0, strpos($path, "root"));
echo "This Is Your Absolute Path: ";
echo $path; //This will output /home/public_html/
?>
Vous pouvez également utiliser dirname dans dirname pour arriver là où vous voulez être.
Exemple d'utilisation:
Pour Joomla, les modules seront toujours installés dans /public_html/modules/mod_modulename/
Donc, à partir d'un fichier dans le dossier du module, pour accéder à la racine d'installation de Joomla sur n'importe quel serveur, je pourrais utiliser: $path = dirname(dirname(dirname(__FILE__)));
Il en va de même pour Wordpress, où les plugins sont toujours dans wp-content/plugins/
J'espère que cela aide quelqu'un.
avec la fonction preg_replace pour trouver le chemin absolu à partir de __FILE__
vous pouvez facilement trouver avec n'importe quel utilisateur à domicile. Voici mon code:
$ path_image_you_want = preg_replace ('#/public_html /(=^^ /++?)/.*#', '/ public_html/$ 1/images ",
__FILE__
);
<?php
// Get absolute path
$path = getcwd(); // /home/user/public_html/test/test.php.
$path = substr($path, 0, strpos($path, "public_html"));
$root = $path . "public_html/";
echo $root; // This will output /home/user/public_html/