如何使用exec删除Linux上的文件

时间:2012-02-13 11:26:28

标签: php bash filesystems escaping

我正在尝试删除以前创建的名为a\的文件。

我试图使用:

1)

rm -rf a\\

2)

rm -rf a\\/

但两者都不起作用。我试图登录终端,但我无法删除。我写了a,然后点击了tab,它显示了a\\/,但它仍无效。终端都没有。我明白了:

 sudo rm -rf a\\/
 rm: cannot remove `a\\': Operation not permitted

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

我假设您使用Ubuntu是因为sudo?

首先确保您与要删除的文件位于同一目录中,请执行以下操作:

print(getcwd());

其次尝试将您尝试删除的文件的所有者更改为www-data(或apache,具体取决于您的服务器),然后查看是否可以从php脚本中删除该文件。

如果这样可行,那么您遇到的问题就是权限相关。

有很多方法可以解决这个问题。

  1. 确保您要删除的文件归Web服务器进程所有(最安全)。
  2. 授予文件777权限,以便任何用户都可以删除它们。
  3. 将网络服务器用户添加到sudoers(/ etc / sudoers)(最不安全)

答案 1 :(得分:0)

您应该在PHP代码中使用exec("rm -rf a\\\\");

Php使用\\来转义\并且系统使用相同的内容,因此您需要两次转义\

答案 2 :(得分:0)

您应尝试使用/path/to/file./a\\指定文件的完整路径。逃脱的东西已经解释过了。