From 7535d3e391ce959b70ea19854a1628e84e5430e9 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Thu, 8 Sep 2016 15:14:20 +0200 Subject: [PATCH] Only use realpath for real directories (#26060) In some cross-local-storage use cases, the Local storage is instantiated with "/" as data directory. In such cases, calling realpath() would cause PHP warnings when open_basedir is set. This fix bypasses the realpath() call when dealing with a root storage. Downstreaming of https://github.com/owncloud/core/pull/26060 Signed-off-by: Lukas Reschke --- lib/private/Files/Storage/Local.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php index 19674fc9413..0d63fd46ecc 100644 --- a/lib/private/Files/Storage/Local.php +++ b/lib/private/Files/Storage/Local.php @@ -54,7 +54,12 @@ class Local extends \OC\Files\Storage\Common { throw new \InvalidArgumentException('No data directory set for local storage'); } $this->datadir = $arguments['datadir']; - $this->realDataDir = rtrim(realpath($this->datadir), '/') . '/'; + // some crazy code uses a local storage on root... + if ($this->datadir === '/') { + $this->realDataDir = $this->datadir; + } else { + $this->realDataDir = rtrim(realpath($this->datadir), '/') . '/'; + } if (substr($this->datadir, -1) !== '/') { $this->datadir .= '/'; } -- 2.39.5