public function stream_open($path, $mode, $options, &$opened_path)
    {
        $this->fileName = $path;
        $this->temporaryFileName = tempnam(sys_get_temp_dir(), 'azure');

        // Check the file can be opened
        $fh = @fopen($this->temporaryFileName, $mode);
        if ($fh === false) {
            return false;
        }
        fclose($fh);

        // Write mode?
        if (strpbrk($mode, 'wax+')) {
            $this->writeMode = true;
        } else {
            $this->writeMode = false;
        }

        // If read/append, fetch the file
        if (!$this->writeMode || strpbrk($mode, 'ra+')) {
            $this->getStorageClient($this->fileName)->getBlob(
                $this->getContainerName($this->fileName),
                $this->getFileName($this->fileName),
                $this->temporaryFileName
            );
        }

        // Open temporary file handle
        $this->temporaryFileHandle = fopen($this->temporaryFileName, $mode);

        // Ok!
        return true;
    }