Merge pull request #3595 from annando/1707-realpath

Better use a wrapper
This commit is contained in:
Tobias Diekershoff 2017-07-22 09:32:29 +02:00 committed by GitHub
commit dd0a1cf586
3 changed files with 27 additions and 7 deletions

View File

@ -1399,7 +1399,7 @@ function get_temppath() {
if (($temppath != "") && App::directory_usable($temppath)) { if (($temppath != "") && App::directory_usable($temppath)) {
// We have a temp path and it is usable // We have a temp path and it is usable
return realpath($temppath); return App::realpath($temppath);
} }
// We don't have a working preconfigured temp path, so we take the system path. // We don't have a working preconfigured temp path, so we take the system path.
@ -1408,7 +1408,7 @@ function get_temppath() {
// Check if it is usable // Check if it is usable
if (($temppath != "") && App::directory_usable($temppath)) { if (($temppath != "") && App::directory_usable($temppath)) {
// Always store the real path, not the path through symlinks // Always store the real path, not the path through symlinks
$temppath = realpath($temppath); $temppath = App::realpath($temppath);
// To avoid any interferences with other systems we create our own directory // To avoid any interferences with other systems we create our own directory
$new_temppath = $temppath . "/" . $a->get_hostname(); $new_temppath = $temppath . "/" . $a->get_hostname();
@ -1498,7 +1498,7 @@ function get_itemcachepath() {
$itemcache = get_config('system', 'itemcache'); $itemcache = get_config('system', 'itemcache');
if (($itemcache != "") && App::directory_usable($itemcache)) { if (($itemcache != "") && App::directory_usable($itemcache)) {
return realpath($itemcache); return App::realpath($itemcache);
} }
$temppath = get_temppath(); $temppath = get_temppath();

View File

@ -975,7 +975,7 @@ function admin_page_site_post(App $a) {
set_config('system', 'hide_help', $hide_help); set_config('system', 'hide_help', $hide_help);
if ($itemcache != '') { if ($itemcache != '') {
$itemcache = realpath($itemcache); $itemcache = App::realpath($itemcache);
} }
set_config('system', 'itemcache', $itemcache); set_config('system', 'itemcache', $itemcache);
@ -983,13 +983,13 @@ function admin_page_site_post(App $a) {
set_config('system', 'max_comments', $max_comments); set_config('system', 'max_comments', $max_comments);
if ($temppath != '') { if ($temppath != '') {
$temppath = realpath($temppath); $temppath = App::realpath($temppath);
} }
set_config('system', 'temppath', $temppath); set_config('system', 'temppath', $temppath);
if ($basepath != '') { if ($basepath != '') {
$basepath = realpath($basepath); $basepath = App::realpath($basepath);
} }
set_config('system', 'basepath', $basepath); set_config('system', 'basepath', $basepath);

View File

@ -327,7 +327,27 @@ class App {
$basepath = $_SERVER['PWD']; $basepath = $_SERVER['PWD'];
} }
return $basepath; return self::realpath($basepath);
}
/**
* @brief Returns a normalized file path
*
* This is a wrapper for the "realpath" function.
* That function cannot detect the real path when some folders aren't readable.
* Since this could happen with some hosters we need to handle this.
*
* @param string $path The path that is about to be normalized
* @return string normalized path - when possible
*/
public static function realpath($path) {
$normalized = realpath($path);
if (!is_bool($normalized)) {
return $normalized;
} else {
return $path;
}
} }
function get_scheme() { function get_scheme() {