可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
$_SERVER['DOCUMENT_ROOT']
returns
/usr/local/apache/htdocs/
is there a way to get
/home/user/public_html/
The problem is that I have to write a script which can be in the public_html folder or a sub-folder of the public_html folder. The script should save uploaded files into a folder inside public_html directory(say images). In other words let us say that my file is test.php and the path to it is
/home/user/public_html/test/test.php.
And there is a folder
/home/user/public_html/images
where files uploaded via test.php have to be saved. I don't know where the test.php file will be run. For example it can be at the path
/home/user/public_html/test/another-dir/test.php
How do I get the path to the images folder without knowing where the test.php file will be?
回答1:
something I found today, after reading this question and continuing on my googlesurf:
https://docs.joomla.org/How_to_find_your_absolute_path
<?php
$path = getcwd();
echo "This Is Your Absolute Path: ";
echo $path;
?>
works for me
回答2:
Where is the file that you're running? If it is in your public html folder, you can do echo dirname(__FILE__);
回答3:
Let's asume that show_images.php
is in folder images
and the site root is public_html
, so:
echo dirname(__DIR__); // prints '/home/public_html/'
echo dirname(__FILE__); // prints '/home/public_html/images'
回答4:
put anyfile on the directories you wanted to find, in this case, place 'root' at public_html
/home/user/public_html/root <- note that 'root' is not a folder (you can use root.txt if u want)
And use this function
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.="../";
}
}
}
and get the value by calling it
$pathToRoot = findThis('root');
And it will return, for example the the dir of php script is
/home/user/public_html/test/another-dir/test.php
so the $pathToRoot will be
$pathToRoot => "../../../"
Is this the one you want??
回答5:
Whenever you want any sort of configuration information you can use phpinfo()
.
回答6:
Out of curiosity, why don't you just use the url for the said folder?
http://www.mysite.com/images
Assuming that the folder never changes location, that would be the easiest way to do it.
回答7:
This is super old, but I came across it and this worked for me.
<?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/
?>
回答8:
with preg_replace function to find absolute path from __FILE__
you can easily find with anything home user. Here short my code :
$path_image_you_want = preg_replace('#/public_html/([^/]+?)/.*#',
'/public_html/$1/images", __FILE__
);
回答9:
You can also use dirname in dirname to get to where you want to be.
Example of usage:
For Joomla, modules will always be installed in /public_html/modules/mod_modulename/
So, from within a file within the module's folder, to get to the Joomla install-root on any server , I could use:
$path = dirname(dirname(dirname(__FILE__)));
The same goes for Wordpress, where plugins are always in wp-content/plugins/
Hope this helps someone.