我正在尝试在包含此 php 文件和其他文件(可以是图像、文本文档、pdf、其他代码文件等)的文件夹中执行 php 进程文件
我需要生成一个过程来检测主要图像格式并自动删除它。
我有这个代码:
$dirPath = '.'; $files = scandir($dirPath); foreach ($files as $file) { $filePath = $dirPath . '/' . $file; if (is_file($filePath)) { //echo $file . "<br>"; $file_parts = explode(".", $file); $file_extension = $file_parts[1]; $image_extensions = array( "jpg", "png", "jpeg", "tiff", "webm", "jpeg", "gif" ); echo "<br />Found this file: ".$file; foreach($image_extensions as $i_e){ if (strcmp($file_extension, strval($i_e)) === 0) { chmod ($file, 0777); unlink($file); echo 'Deleted for being an image.'; } } } }
但永远不会删除它。文件的权限级别为 0644。这是一个问题吗?我可以更改权限吗?可能是另一个原因。
所有文件都在同一个文件夹中。为什么文件没有被删除?
提前致谢。
我试图删除文件夹中的所有图像,但不起作用。
将文件的权限设置为 644 应该不是问题,因为所有者在 PHP 中同时具有读取和写入权限。但是,请检查该文件是否属于运行 PHP 脚本的用户所有。
以下是您代码中的一些调整,可能会有所帮助!
$dirPath = '.'; $files = scandir($dirPath); $image_extensions = array("jpg", "png", "jpeg", "tiff", "webm", "jpeg", "gif"); foreach ($files as $file) { $filePath = $dirPath . '/' . $file; if (is_file($filePath)) { $file_parts = explode(".", $file); //The function strtolower() ensures case-insensitive comparison of file extensions //The function end() moves the internal pointer to the last element in the array $file_extension = strtolower(end($file_parts)); if (in_array($file_extension, $image_extensions)) { if (unlink($filePath)) { echo '$file has been deleted'; } else { echo '$file has not been deleted'; } } } }