PHP scandir 功能问题
PHP problems with scandir function
dirdel.php:
<?php
//The name of the folder.
$dir = 'images';
//Get a list of all of the file names in the folder.
$arraydir = scandir($dir, 2);
print_r($arraydir);
//Loop through the file list.
foreach ($arraydir as $key => $value) {
unlink($arraydir[2]);
}
?>
数组输出:
Array ( [0] => .
[1] => ..
[2] => ana.png
[3] => ban.png
[4] => ing.png
[5] => maca.png
[6] => no.png
[7] => pret.png )
Warning: unlink(ana.png): No such file or directory in C:\phpdesktop-
chrome-57.0-rc-php-7.1.3\www\dirdel.php on line 10
为了调查错误,我还尝试了类似的方法:
require 'images/';
输出:
Warning: require(C:\phpdesktop-chrome-57.0-rc-php-7.1.3\www\images):
failed to open stream: Permission denied in C:\phpdesktop-chrome-57.0-rc-
php-7.1.3\www\dirdel.php on line 2
我想删除 "ana.png" 代表的文件:“$arraydir[2]”(该文件在 www/images 中找到)
我已经在几个地方搜索过,但我没有找到任何可以帮助我解决这个问题的东西。
有解决办法吗?
备选方案是有效的,只要它们尊重数组的结构:
Array ( [0] => .
[1] => ..
[2] => ana.png
[3] => ban.png
[4] => ing.png
[5] => maca.png
[6] => no.png
[7] => pret.png )
感谢您的关注。
该文件位于 images
文件夹中,但您没有将其添加到 unlink()
函数参数中。
所以试试这个
unlink($dir . '/' . $arraydir[2]);
实际上,如果您 运行 您的代码,您将始终只取消链接数组的索引 2。您必须使用在 foreach 循环中使用的变量和引用。我建议您尝试下面提到的代码:
<?php
//The name of the folder.
$dir = 'images';
//Get a list of all of the file names in the folder.
$arraydir = scandir($dir, 2);
print_r($arraydir);
//Loop through the file list.
foreach ($arraydir as $key => $value) {
if ($arraydir[$key] == 'ana.png' && file_exists($dir . DIRECTORY_SEPARATOR . $arraydir[$key])) {
unlink($dir . DIRECTORY_SEPARATOR . $arraydir[$key]);
break;
}
}
?>
希望对您有所帮助。
当您第一次尝试删除文件 ana.png 时,使用的路径是相对于您当前目录的路径,因此找不到该文件。导致第一个错误的原因。
要解决这个问题,您应该给出一个绝对路径名,
$prefix = 'C:\phpdesktop-chrome-57.0-rc-php-7.1.3\www\images\';
$filename = $prefix . $arraydir[2];
unlink($filename)
或者,将您的文件名与其目录名连接起来 $dir . '/' . $arraydir[2]
$dir = 'images'; /*Assuming your current directory is 'C:\phpdesktop-chrome-57.0-rc-php-7.1.3\www\'*/
unlink($dir . $arraydir[2]);
至于第二个错误,你似乎没有文件夹的写权限'C:\phpdesktop-chrome-57.0-rc-php-7.1.3\www\images';您应该更改文件和目录权限。我建议遵循此 tutorial 关于在 windows 10
上设置文件权限
dirdel.php:
<?php
//The name of the folder.
$dir = 'images';
//Get a list of all of the file names in the folder.
$arraydir = scandir($dir, 2);
print_r($arraydir);
//Loop through the file list.
foreach ($arraydir as $key => $value) {
unlink($arraydir[2]);
}
?>
数组输出:
Array ( [0] => .
[1] => ..
[2] => ana.png
[3] => ban.png
[4] => ing.png
[5] => maca.png
[6] => no.png
[7] => pret.png )
Warning: unlink(ana.png): No such file or directory in C:\phpdesktop- chrome-57.0-rc-php-7.1.3\www\dirdel.php on line 10
为了调查错误,我还尝试了类似的方法:
require 'images/';
输出:
Warning: require(C:\phpdesktop-chrome-57.0-rc-php-7.1.3\www\images): failed to open stream: Permission denied in C:\phpdesktop-chrome-57.0-rc- php-7.1.3\www\dirdel.php on line 2
我想删除 "ana.png" 代表的文件:“$arraydir[2]”(该文件在 www/images 中找到)
我已经在几个地方搜索过,但我没有找到任何可以帮助我解决这个问题的东西。
有解决办法吗?
备选方案是有效的,只要它们尊重数组的结构:
Array ( [0] => .
[1] => ..
[2] => ana.png
[3] => ban.png
[4] => ing.png
[5] => maca.png
[6] => no.png
[7] => pret.png )
感谢您的关注。
该文件位于 images
文件夹中,但您没有将其添加到 unlink()
函数参数中。
所以试试这个
unlink($dir . '/' . $arraydir[2]);
实际上,如果您 运行 您的代码,您将始终只取消链接数组的索引 2。您必须使用在 foreach 循环中使用的变量和引用。我建议您尝试下面提到的代码:
<?php
//The name of the folder.
$dir = 'images';
//Get a list of all of the file names in the folder.
$arraydir = scandir($dir, 2);
print_r($arraydir);
//Loop through the file list.
foreach ($arraydir as $key => $value) {
if ($arraydir[$key] == 'ana.png' && file_exists($dir . DIRECTORY_SEPARATOR . $arraydir[$key])) {
unlink($dir . DIRECTORY_SEPARATOR . $arraydir[$key]);
break;
}
}
?>
希望对您有所帮助。
当您第一次尝试删除文件 ana.png 时,使用的路径是相对于您当前目录的路径,因此找不到该文件。导致第一个错误的原因。
要解决这个问题,您应该给出一个绝对路径名,
$prefix = 'C:\phpdesktop-chrome-57.0-rc-php-7.1.3\www\images\';
$filename = $prefix . $arraydir[2];
unlink($filename)
或者,将您的文件名与其目录名连接起来 $dir . '/' . $arraydir[2]
$dir = 'images'; /*Assuming your current directory is 'C:\phpdesktop-chrome-57.0-rc-php-7.1.3\www\'*/
unlink($dir . $arraydir[2]);
至于第二个错误,你似乎没有文件夹的写权限'C:\phpdesktop-chrome-57.0-rc-php-7.1.3\www\images';您应该更改文件和目录权限。我建议遵循此 tutorial 关于在 windows 10
上设置文件权限