Я запускаю веб-сайт с каркасом 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.
Просто для ударов, попробуйте 'fopen ($ file, 'w +')' и посмотрим, если это имеет значение – Machavity
@Machavity Это дает мне тот же результат. Кроме того, если я просто верну функцию true, я получаю ошибку. * При попытке переместить загруженный файл в конечный пункт назначения возникла проблема. * –