driver = $driver; } /** * @inheritDoc */ public function validate( string $directoryPath, string $path, ?string $scheme = null, bool $absolutePath = false ): void { $realDirectoryPath = $this->driver->getRealPathSafety($directoryPath); if ($realDirectoryPath[-1] !== DIRECTORY_SEPARATOR) { $realDirectoryPath .= DIRECTORY_SEPARATOR; } if (!$absolutePath) { $actualPath = $this->driver->getRealPathSafety( $this->driver->getAbsolutePath( $realDirectoryPath, $path, $scheme ) ); } else { $actualPath = $this->driver->getRealPathSafety($path); } if (mb_strpos($actualPath, $realDirectoryPath) !== 0 && $path .DIRECTORY_SEPARATOR !== $realDirectoryPath ) { throw new ValidatorException( new Phrase( 'Path "%1" cannot be used with directory "%2"', [$path, $directoryPath] ) ); } } }