classes/phing/tasks/ext/SymlinkTask.php
protected function symlink($target, $link)
    {
        $fs = FileSystem::getFileSystem();

        if ($this->isRelative()) {
            $link = (new PhingFile($link))->getAbsolutePath();
            $target = rtrim($this->makePathRelative($target, dirname($link)), '/');
        }

        if (is_link($link) && @readlink($link) == $target) {
            $this->log('Link exists: ' . $link, Project::MSG_INFO);

            return true;
        }

        if (file_exists($link) || is_link($link)) {
            if (!$this->getOverwrite()) {
                $this->log('Not overwriting existing link ' . $link, Project::MSG_ERR);

                return false;
            }

            if (is_link($link) || is_file($link)) {
                $fs->unlink($link);
                $this->log('Link removed: ' . $link, Project::MSG_INFO);
            } else {
                $fs->rmdir($link, true);
                $this->log('Directory removed: ' . $link, Project::MSG_INFO);
            }
        }

        $this->log('Linking: ' . $target . ' to ' . $link, Project::MSG_INFO);

        return $fs->symlink($target, $link);
    }
protected function symlink($target, $link)
    {
        $fs = FileSystem::getFileSystem();

        if ($this->isRelative()) {
            $link = (new PhingFile($link))->getAbsolutePath();
            $target = rtrim($this->makePathRelative($target, dirname($link)), '/');
        }

        if (is_link($link) && @readlink($link) == $target) {
            $this->log('Link exists: ' . $link, Project::MSG_INFO);

            return true;
        }

        if (file_exists($link) || is_link($link)) {
            if (!$this->getOverwrite()) {
                $this->log('Not overwriting existing link ' . $link, Project::MSG_ERR);

                return false;
            }

            if (is_link($link) || is_file($link)) {
                $fs->unlink($link);
                $this->log('Link removed: ' . $link, Project::MSG_INFO);
            } else {
                $fs->rmdir($link, true);
                $this->log('Directory removed: ' . $link, Project::MSG_INFO);
            }
        }

        $this->log('Linking: ' . $target . ' to ' . $link, Project::MSG_INFO);

        return $fs->symlink($target, $link);
    }
protected function symlink ( $ target , $ link ) { $ fs = FileSystem :: getFileSystem ( ) ; if ( $ this -> isRelative ( ) ) { $ link = ( new PhingFile ( $ link ) ) -> getAbsolutePath ( ) ; $ target = rtrim ( $ this -> makePathRelative ( $ target , dirname ( $ link ) ) , '/' ) ; } if ( is_link ( $ link ) && @ readlink ( $ link ) == $ target ) { $ this -> log ( 'Link exists: ' . $ link , Project :: MSG_INFO ) ; return true ; } if ( file_exists ( $ link ) || is_link ( $ link ) ) { if ( ! $ this -> getOverwrite ( ) ) { $ this -> log ( 'Not overwriting existing link ' . $ link , Project :: MSG_ERR ) ; return false ; } if ( is_link ( $ link ) || is_file ( $ link ) ) { $ fs -> unlink ( $ link ) ; $ this -> log ( 'Link removed: ' . $ link , Project :: MSG_INFO ) ; } else { $ fs -> rmdir ( $ link , true ) ; $ this -> log ( 'Directory removed: ' . $ link , Project :: MSG_INFO ) ; } } $ this -> log ( 'Linking: ' . $ target . ' to ' . $ link , Project :: MSG_INFO ) ; return $ fs -> symlink ( $ target , $ link ) ; }
Create the actual link

@param  string $target
@param  string $link
@return bool
Create the actual link