7

我正在处理一个 php 脚本,我想使用通配符 (*) 从给定文件夹中删除一些文件。
我找到了一些像这样的工作示例,其中使用了 whereunlink()glob()function。

现在,我想知道,使用exec函数和命令删除文件也可以rm -f /path/to/folder/_prefix_*吗?
使用它是否有任何安全风险?
如果可以的话,在性能方面会更好吗?

编辑:
所以,从第一个答案我可以看到,确实,使用exec可能是一个可以接受的解决方案。
性能问题呢?该选项是否有exec可能比该技术更好(更快/要求更低)glob/unlink

先感谢您

4

2 回答 2

13

因为用户提供的数据没有机会被注入,所以使用execover没有安全问题glob/unlink。但是, usingglob/unlink允许您定义异常:

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

并且exec通常在共享服务器上被禁用,因此glob/unlink更便携。如果您有专门的设置并且不打算放弃它,则无需担心。

于 2012-09-03T21:51:28.110 回答
2

两种选择都可以。但是,如果您不控制自己的服务器或在共享主机上,则 exec 命令将不可用。

为了节省开支,请使用 glob 并取消链接。

于 2012-09-03T21:52:51.857 回答