web-dev-qa-db-fra.com

Comment obtenir le chemin absolu vers le dossier public_html?

$_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?

24
Can't Tell

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

37

Où se trouve le fichier que vous exécutez? S'il se trouve dans votre dossier html public, vous pouvez faire echo dirname(__FILE__);

21
Jim Rubenstein

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'
11
Jasom Dotnet

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 ??

3
Irman Ahmad

Chaque fois que vous voulez n'importe quelle sorte d'informations de configuration, vous pouvez utiliser phpinfo() .

3
daalbert

Par curiosité, pourquoi n'utilisez-vous pas simplement l'URL pour ledit dossier?

http://www.mysite.com/images

En supposant que le dossier ne change jamais d'emplacement, ce serait le moyen le plus simple de le faire.

2
Sylverdrag

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/
?>
1
vinylDeveloper

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.

0
Daan van den Bergh

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__);

0
NSD
<?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/
0
antelove