使用PHP从Linux服务器上的文件夹中删除所有文件
我的问题和这个差不多 我试着用@Floern提供的答案 但这对我不起作用。我试图从Linux服务器上的文件夹中获取文件名。我已经将文件夹和文件权限更改为rwxrwx。我一直收到“无法获取文件名”的消息。有人知道怎么解决吗?非常感谢使用PHP从Linux服务器上的文件夹中删除所有文件,php,linux,Php,Linux,我的问题和这个差不多 我试着用@Floern提供的答案 但这对我不起作用。我试图从Linux服务器上的文件夹中获取文件名。我已经将文件夹和文件权限更改为rwxrwx。我一直收到“无法获取文件名”的消息。有人知道怎么解决吗?非常感谢 $files=glob('/data/in/*') or die ("Unable to get the filename"); foreach ($files as $file) {
$files=glob('/data/in/*') or die ("Unable to get the filename");
foreach ($files as $file) {
if(is_file($file)){
echo $file;
unlink($file) or die ("Uable to delete file!");
}
}
------更新----
我刚想出来。这是服务器的问题。即使分配了写入权限,我也无法将任何内容写入数据文件夹。我将把我的in文件夹移动到另一个文件夹
非常感谢大家的评论 正如@Marc B所说,你只需写下以下内容:
$files=glob('data/in/*') or die ("Unable to get the filenames!");
foreach ($files as $file) {
if(is_file($file)){
echo $file;
unlink($file) or die ("Unable to delete file!");
}
}
你写:glob('/data/in/*')
,我写glob('data/in/*')
您使用绝对路径,我使用相对路径。使用本教程:
并检查您的文件夹权限是否允许写入
你试过这样做吗:
$dir = 'your/directory/';
foreach(glob($dir.'*.*') as $v){
unlink($v);
}
如果文件不在公共目录下 将文件模式更改为777
$files=glob('data/in/*') or die ("Unable to get the filename");
foreach ($files as $file) {
if(is_file($file)){
echo $file;
chmod($file,777);
unlink($file) or die ("Uable to delete file!");
}
}
使用php解决方案。不喜欢
glob
功能。您可以使用递归目录迭代器
$filePath = '/someDir';
$directoryIterator = new \RecursiveDirectoryIterator(realpath($filePath));
foreach (new \RecursiveIteratorIterator($directoryIterator) as $object ) {
if(!$object->isDir())
{
unlink($object->getPath());
}
}
所以问题真的是“为什么
glob
失败”?我们怎么知道呢?使用scandir()end排除目录中的文件,并测试is_dir($item)
您的文件系统根目录中是否确实有/data
目录?我怀疑。。。您的站点的文档根目录中可能有/data
,但这将是/some/other/path/site/docroot/data
,而不仅仅是/data
@Jon我认为您不理解我的问题。glob为其他人工作。因此,问题不是“为什么glob会失败”。如果我知道问题是什么,我不会在这里发帖。@user2167772:如果你得到“无法获取文件名”,那意味着glob
失败。这意味着您要找出glob
失败的原因。glob
只有一个参数。你确定它是正确的吗?Quote我已经将文件夹和文件权限更改为rwxrwxrwx
他已经检查了权限n,他只是没有通过glob()函数,因为他使用了绝对路径:)你有没有输入777权限?他输入了rwxrwxrwx
这是sameHi Bob0t和@Marc B。谢谢你的评论。我尝试了相对路径。它不起作用。我的文件系统的根目录中确实有一个/data目录。那么这不是解决方案:vIt是服务器的问题。