public static function webRmR($directory, $url)
    {
        if (!is_dir($directory)) {
            return;
        }
        $kill_script = <<<'EOS'
				<?php

				$dir = dirname(__FILE__);

				foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST) as $path) {
				    $path->isDir() ? @rmdir($path->getPathname()) : @unlink($path->getPathname());
				}
				@rmdir($dir);
				echo "done.";

EOS;
        $target = self::join($directory, 'pstaf.selfkill.php');
        if (!file_put_contents($target, $kill_script)) {
            throw new \Exception('Could not put selfkill script in place.');
        }
        $got = trim(file_get_contents($url . '/pstaf.selfkill.php'));
        if ($got !== 'done.') {
            throw new \Exception('Invalid output from selfkill script.');
        }
        $spinner = new Spinner(sprintf('Selfkill failed: file `%s` should not exist anymore.', $directory), 300);
        $spinner->assertBecomesTrue(function () use($directory) {
            if (file_exists($directory)) {
                @self::rmR($directory);
            }
            return !file_exists($directory);
        });
    }