Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不能用php简单地删除一个文件夹?_Php - Fatal编程技术网

为什么不能用php简单地删除一个文件夹?

为什么不能用php简单地删除一个文件夹?,php,Php,不确定这是否是正确的地方张贴这篇文章,但我想知道为什么你不能只是简单地删除一个文件夹。为什么在删除文件夹之前必须循环浏览每个文件并删除它们?是否有任何新功能允许您只删除文件夹而无需递归?您实际上可以,但这取决于操作系统。前提是运行PHP的用户对可执行文件具有执行权限,对要删除的目录和文件具有删除权限 if ($path = realpath(__DIR__ . '/subdirectory')) { if (\DIRECTORY_SEPARATOR === '/') {

不确定这是否是正确的地方张贴这篇文章,但我想知道为什么你不能只是简单地删除一个文件夹。为什么在删除文件夹之前必须循环浏览每个文件并删除它们?是否有任何新功能允许您只删除文件夹而无需递归?

您实际上可以,但这取决于操作系统。前提是运行PHP的用户对可执行文件具有执行权限,对要删除的目录和文件具有删除权限

if ($path = realpath(__DIR__ . '/subdirectory')) {
    if (\DIRECTORY_SEPARATOR === '/') {
        /* Linux or Mac */
        `rm -rf $path`;
        /* shell_exec('rm -rf ' . $path); //alternative */
    } elseif (\DIRECTORY_SEPARATOR === '\\') {
        /* Windows */
        `rd /s /q "$path"`;
        /* shell_exec('rd /s /q "' . $path . '"'); //alternative */
    }
}
请参阅以下方面的更多信息:

  • shell\u exec
  • exec

因为不能,所以必须首先确保目录为空,就像大多数操作系统在使用命令行时一样。@adeneo删除包含文件的文件夹似乎是一种非常常见的做法。为什么PHP还没有添加一个函数来做这件事呢?我不知道,可能是因为让你自己做这件事似乎很简单。我认为出于安全原因,你可能会错误地做这件事,并拿走你所有的文件夹…
exec('rm-rf your_dir/')