2012-05-03 2 views
0

При попытке загрузить файл изображения сервер-сервер иногда предупреждает. Если я попытаюсь загрузить один и тот же файл в последующих попытках, изображение будет загружено.Проблема с загрузкой файла на хост-сервере

Предупреждение:

Warning (2): move_uploaded_file(files/photos/3.jpg) [http://php.net/function.move-uploaded-file]: failed to open stream: Permission denied [APP/controllers/components/file_upload.php, line 55] 
Warning (2): move_uploaded_file() [http://php.net/function.move-uploaded-file]: Unable to move '/tmp/phpUutr9Z' to 'files/photos/3.jpg' [APP/controllers/components/file_upload.php, line 55] 

Файл Загрузить

if (is_uploaded_file($file_temp)) { 
    if (move_uploaded_file($file_temp, $destination . $filename . '.' . $extension)) { 
    $error = "SUCCESS"; 
    return $error; 
    } else { 
    $error = "ERROR"; 
    return $error; 
    } 
} 

Здесь, когда выдается предупреждение 'ERROR' в еще часть также возвращается с предупреждением ...

Как я могу это исправить?

Это работает хорошо в локальном сервере ...

+0

Вы хотите сказать, что файлы, которые вы уже загрузили или которые уже существуют, могут загружаться, а новые - нет? Но я согласен с разрешениями с Валери. – earlonrails

+0

Файл «test.jpg», первый раз, когда он может показывать предупреждение, но в следующий раз он может быть загружен на сервер ... –

ответ

2

Возможно, ваш сценарий не имеет разрешения на запись в каталог назначения.

+0

Если разрешение является ошибкой, то файл не будет загружен на сервер, не так ли? Здесь файл загружается на сервер, но только в некоторых случаях ошибка отображается, и загрузка не выполняется. –

0

Значит, APP/controllers/components/files/photos/3.jpg, где вы хотите сохранить свои закачки? Если это так, то это проблема с разрешениями.

Или вы имеете в виду: WEB_ROOT/files/photos/3.jpg если так что вы должны изменить свой код тоже:

if (is_uploaded_file($file_temp)) { 
    if (move_uploaded_file($file_temp, '/'.$destination.$filename.'.'.$extension)) { 
    $error = "SUCCESS"; 
    return $error; 
    } else { 
    $error = "ERROR"; 
    return $error; 
    } 
} 

уведомление слэш '/'.$destination

+0

Я использую фреймворк фрейма фреймворка, местом назначения является 'webroot/files/photos/3.jpg'. Но какой-то код времени, о котором идет речь, работает нормально. Только в некоторых случаях он возвращает предупреждение ... –

0

Проверьте CHMOD на директории и файла. Обычно PHP работает как root, но вы все равно можете запретить его доступ с помощью CHMOD.

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