user1323512
user1323512

Reputation: 137

PHP unlink symlink

when I create under windows a symlink (didn't test it yet under linux) and want to delete/unlink it again (I tried it with the unlink() - function), it always delete the symlink + original file. But I just want to delete the symlink. Isn't there any function for it?

Upvotes: 5

Views: 15163

Answers (5)

the_nuts
the_nuts

Reputation: 6054

On linux, to be safe I would just go with

shell_exec('rm ' . $file);

Upvotes: 0

Vernard Luz
Vernard Luz

Reputation: 291

Check this answer: https://stackoverflow.com/a/12288764/3910083

unlink() is the correct approach

code snippet from a project of mine, to only delete if it was a symlink

if(file_exists($linkfile)) {
    if(is_link($linkfile)) {
        unlink($linkfile);
    } else {
        exit("$linkfile exists but not symbolic link\n");
    }
}

readlink(), returns the target of a link, you can run unlink on that

if(is_link($linkfile)) {
      $target = readlink($linkfile)
      unlink($target)
}

Upvotes: 9

Abid Hussain
Abid Hussain

Reputation: 7762

Read this:-

http://php.net/manual/en/function.symlink.php

try this:-

symlink($target, $link);
unlink($link);
unlink($target);

Upvotes: -2

Hawili
Hawili

Reputation: 1659

Just make sure you are using soft link, not hard links

check the usage of Mklink from here

Upvotes: 0

sanders
sanders

Reputation: 10888

  1. Rename the symbolic link to something like "my_link" in order to reuse the same PHP file.
  2. Create the PHP file with the appropriate code. I used "unlink.php". Simple and easy to remember.
  3. Upload the PHP file to the directory containing the link.
  4. Type in the URL to the file.

The result is that the file disappears without a trace.

<?php
unlink ('my_link');
?>

Upvotes: 0

Related Questions