2014-01-05 4 views
1

Я пытался выяснить, почему мой код Php дает мне раздражающую ошибку. Я пробовал бесчисленные функции из предыдущего поста, но ошибка, которую он давала, - «Разрешить отказ». По моему мнению, либо я должен иметь специальные привилегии для удаления файлов и т. Д. Я пробовал несколько решений, но я все еще получаю эту ошибку. Если кто-то может указать мне в правильном направлении, это будет здорово. Ive опубликовать фрагмент моего кода ниже .. ThanksssРазрешение PHP Отказано в использовании unlink и rmdir

 $first_sub = "my_dir";   
     if(is_dir($first_sub)){ 
      $read_sub1 = opendir($first_sub); 
      while(false !== ($files = readdir($read_sub1))){ 
       if($files!="." && $files!=".."){ 
        unlink($first_sub ."/". $files); 
       } 
      } 
      closedir($read_sub1); 
+0

Какие функции дают вам ** разрешение отклонено ** конкретно? Только одна или все связанные с файлом функции? – GiamPy

+0

Это происходит через выполнение php из командной строки или через загрузку веб-страницы? – Grzegorz

+0

@GiamPy В настоящее время я пытаюсь отключить(), и rmdir dosent действительно дает мне необходимую мне функциональность. rmdir дает мне сообщение о том, что он не может удалить файлы, потому что каталог не пуст, что имеет смысл. –

ответ

4

Вы должны установить правильное разрешение вашего сервера каталогов: визит: http://bd1.php.net/chmod

<?php 
// Read and write for owner, nothing for everybody else 
chmod($first_sub ."/". $files, 0600); 

// Read and write for owner, read for everybody else 
chmod($first_sub ."/". $files, 0644); 

// Everything for owner, read and execute for others 
chmod($first_sub ."/". $files, 0755); 

// Everything for owner, read and execute for owner's group 
chmod($first_sub ."/". $files, 0750); 
?> 

непосредственно перед unlink вы можете вызывать эту функцию.

+0

@ Reza Mamun .. Спасибо, но ошибка все еще встречается, –

+1

На самом деле мои извинения, что она работала, я выбираю неправильный режим для владельца ... спасибо –

0

У меня получилось, что ошибка отказа от отказа отключена. Но я исправлю это. Ошибка отобразится как this unlink (../ foldername /) Permission denied.

Мой неправильный код выглядит так:

$image = select_table('webpage', 'wp_name', '$id'); 
$update = "UPDATE webpage SET wp_image = NULL, wp_modifiedby = '{$position}', wp_datemodified = '{$date_now}' WHERE wp_name = '{$id}'"; 

    if (unlink('../webpage/'.$image_dir) && $qry_update = mysqli_query($connection, $update)) { 
     // success 
    } else { 
     // failed 
    } 

Теперь я это исправить мой правильный код, как это:

$image = select_table('webpage', 'wp_name', $id); 

    $update = "UPDATE webpage SET wp_image = NULL, wp_modifiedby = '{$position}', wp_datemodified = '{$date_now}' WHERE wp_name = '{$id}'"; 

    if (unlink('../webpage/'.$image['wp_image']) && $qry_update = mysqli_query($connection, $update)) { 
     // success 

    } else { 
     // failed 

    } 
0

Для тех, кто приземляются на этой странице, это может быть как простой, как не установить $files в существующий файл.

Прискорбно, но я обнаружил, что сообщение: Warning: move_uploaded_file(): Unable to move также может означать file not found.

Скорее всего, причина этой проблемы OP, но, безусловно, стоит проверить файл, представленный передаваемой вами переменной, фактически существует в каталоге.

Смежные вопросы