Search code examples
phpexecunlink

Delete files using wildcard - exec vs unlink


I'm working on a php script, where I want to delete some files from a given folder using wildcard (*).
I've found some working examples like this one, where unlink() and glob() function are used.

Now, i was wondering, would it also be ok to delete the files using the exec function and a command like rm -f /path/to/folder/_prefix_* ?
Are there any security risks taken using this?
And if it is ok, would it be better in terms of performance?

EDIT:
So, from the first answers i can see that indeed, using exec could be an acceptable solution.
What about performance issues? Is there any chance the exec option could be better (faster/less demanding) over the glob/unlink technique?

Thank you in advance


Solution

  • Because there is no chance for user-supplied data to be injected, there is no security issue in using exec over glob/unlink. However, using glob/unlink allows you to define exceptions:

    foreach(glob("delete/*") as $f) {
        if( $f == "delete/notme.txt") continue;
        unlink($f);
    }
    

    And exec is often disabled on shared servers so glob/unlink is more portable. If you have a dedicated setup and don't intend on giving it up, you don't need to worry about that.