2014-09-13 2 views
0

Я запускаю веб-сайт с каркасом CodeIgniter, и у меня есть несколько страниц, из которых пользователи могут загружать файлы (фотографии профилей и т. Д.).PHP-файл не доступен для записи в каталоге 777

Это работало нормально, пока я недавно не удалил и не заменил папку uploads на сервере. Я установил разрешения 777 с помощью FileZilla и подтвердил, что разрешения были фактически установлены после этого. Тем не менее, я получил ошибку CI Загрузка папки назначения не может быть доступна для записи.

Эта ошибка происходит из следующей функции в системе/ядра/common.php (часть рамки CI) по указанной линии:

if (! function_exists('is_really_writable')) 
{ 
    function is_really_writable($file) 
    { 
     // If we're on a Unix server with safe_mode off we call is_writable 
     if (DIRECTORY_SEPARATOR == '/' AND @ini_get("safe_mode") == FALSE) 
     { 
      return is_writable($file); 
     } 

     // For windows servers and safe_mode "on" installations we'll actually 
     // write a file then read it. Bah... 
     if (is_dir($file)) 
     { 
      $file = rtrim($file, '/').'/'.md5(mt_rand(1,100).mt_rand(1,100)); 

      if (($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE) 
      { 
       return FALSE; // RETURNS FALSE HERE <--- 
      } 

      fclose($fp); 
      @chmod($file, DIR_WRITE_MODE); 
      @unlink($file); 
      return TRUE; 
     } 
     elseif (! is_file($file) OR ($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE) 
     { 
      return FALSE; 
     } 

     fclose($fp); 
     return TRUE; 
    } 
} 

Я понятия не имею, что вызывает это. Путь к папке и разрешения точно такие же, как и раньше (на самом деле права были более строгими), и я не изменил сценарий для моей формы загрузки. Все работает отлично, когда я тестирую его локально с помощью Wamp.

+0

Просто для ударов, попробуйте 'fopen ($ file, 'w +')' и посмотрим, если это имеет значение – Machavity

+0

@Machavity Это дает мне тот же результат. Кроме того, если я просто верну функцию true, я получаю ошибку. * При попытке переместить загруженный файл в конечный пункт назначения возникла проблема. * –

ответ

1

Вы дело зарегистрированы в группе загрузок? Если вы запускаете свой сервер под группой изменений Apache в свою группу apache (обычно www-data или http), используя chown команда.

+0

Не могли бы вы дать мне точную команду для этого? Я не уверен, как это сделать. –

+0

chown -R имя пользователя: groupname uploads – marian0

+0

Похоже, у меня нет прав на это делать на сервере (я использую свое студенческое веб-пространство из своего университета). В нем указано «изменение права собственности на папку»: операция не разрешена' –

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