2017-09-09 109 views
-1

我不知道我在做什么错。我想在条件存在后删除特定文件夹中的图像。条件是限制超过八张图片或照片。 它在我删除一个图像时起作用,但只要我添加了一个图像,或者如果条件为,就会导致拒绝访问错误。php unlink权限被拒绝,或者

下面是我的代码来检查病情的数据库,然后据说将删除的文件夹的图像:

mysql_select_db($database_rentaguide, $rentaguide); 
$query_overflow_images = sprintf("SELECT * FROM tbl_rentalimages WHERE sessionid = %s AND image_id > '$lastimageid'", 
    GetSQLValueString($colname_overflow_images, "text")); 
$overflow_images = mysql_query($query_overflow_images, $rentaguide) or die(mysql_error()); 
$row_overflow_images = mysql_fetch_assoc($overflow_images); 
$totalRows_overflow_images = mysql_num_rows($overflow_images); 

while ($row_overflow_images = mysql_fetch_assoc($overflow_images)); { 
    $overflowpath = $row_overflow_images['image_url']; 
    chmod("../".$overflowpath, 0777); 
    unlink("../".$overflowpath); 
} 

图像的实际路径是 - >rentalimages/LqXtyVtzKm/architecture-1836070__340.jpg

的$ lastimageid变量来自数据库连接,它获得第八或最后一个记录的id,以及是否有八个以上的图像。

请帮帮我。请在Windows 7

哦,是的,我运行XAMPP 64位

+1

为什么要调用'chmod()'?要么你对文件有写权限,要么你没有,chmod命令不能以某种方式帮助你获得这样的权限。当然,设置图像文件可执行文件根本没有意义。 – arkascha

+0

请将while循环内的'$ overflowpath'列表转储到某个日志文件中,并检查结果。也许在数据库里面有一些意想不到的价值? – arkascha

+1

一般说明:您正在使用过时的长期弃用的'mysql _...()'函数。出于安全原因,该扩展甚至完全被php-7删除。您应该立即将您的代码移植到更安全的'mysqli'扩展名中。 – arkascha

回答

0

你在你的代码中的错字,在while块体前右(编辑 - 忘了提错字是分号):

/* Empty loop, followed by a code block */ 
while ($row_overflow_images = mysql_fetch_assoc($overflow_images)); 
{ 
    /* $row_overflow_images is no longer an array */ 
    $overflowpath = $row_overflow_images['image_url']; 
    chmod("../".$overflowpath, 0777); 
    /* This line tries to delete the parent folder */ 
    unlink("../".$overflowpath); 
} 
0

这是到底是什么工作....

mysql_select_db($database_rentaguide, $rentaguide); 
$query_overflow_images = sprintf("SELECT * FROM tbl_rentalimages WHERE 
sessionid = %s AND image_id > '$lastimageid'", 
GetSQLValueString($colname_overflow_images, "text")); 
$overflow_images = mysql_query($query_overflow_images, $rentaguide) or 
die(mysql_error()); 
$row_overflow_images = mysql_fetch_assoc($overflow_images); 
$totalRows_overflow_images = mysql_num_rows($overflow_images); 
do { 
    $filepath = $row_overflow_images['image_url']; 
    $imageid = $row_overflow_images['image_id']; 

    $deleteSQL = sprintf("DELETE FROM tbl_rentalimages WHERE image_id = %s", 
         GetSQLValueString($imageid, "int")); 

    mysql_select_db($database_rentaguide, $rentaguide); 
    $Result1 = mysql_query($deleteSQL, $rentaguide) or die(mysql_error()); 
    unlink("../".$filepath); 

} 
while ($row_overflow_images = mysql_fetch_assoc($overflow_images)); 

} 

PS我知道我应该移植到mysqli扩展,但我只是在练习,并试图学习更多。谢谢stachoverflow。你们真棒!