2013-03-30 4 views
1

У меня проблема. С тех пор я пытаюсь загрузить сценарий загрузки. Я также прочитал некоторые другие вопросы о stackoverflow, но ничего не помогло. Веб-пространство позволяет file_upload и размер файла не слишком велик. Также существует каталог, в котором перемещать загрузки. Мой HTML-код:

Upload: <input type="file" name="file"> 

И мой PHP код:

if ($_FILES['file']['error'] == 0) { 
    $tmp_name = $_FILES["file"]["tmp_name"]; 
    $name_file = $_FILES["file"]["name"]; 
    move_uploaded_file($tmp_name, "upload/" . $name_file); 
} 

Я повторил $ ​​_FILES и файл был там и не было никакой ошибки. Каждый раз, когда я пытаюсь загрузить файл (я также пытался загрузить другие файлы и типы файлов), move_uploaded_file возвращает false.

EDIT: Папка теперь доступна для записи.

+2

Вы уверены, что 'upload /' существует и доступен для записи? – BenM

+0

Да, папка существует, а разрешения 755. Я думаю, что это правильные разрешения. – bw2801

+2

вы можете добавить это перед move_uploaded_file(): 'if (! Is_writable (" upload ") ||! Is_dir (" upload ")) {echo" error in dir "; } ' – 2013-03-30 18:52:01

ответ

3

Хорошо, я решил мою проблему. Я включил error_resporting() и потому, что разрешения не были установлены. Теперь они 777, и я могу перемещать файлы.

1

Установите права доступа к папке на upload на номер 666. Это должно гарантировать правильность записи каталога.

2

Загрузка папки не будет доступна для записи другими пользователями, установив разрешение 755. Вы можете установить разрешение по крайней мере 666 через команду chmod или лучше установить право собственности на папку для загрузки для пользователя apache.

Я настроить его на Ubuntu так

sudo chown www-data:www-data upload 
+0

Спасибо, я уже поменял его :) – bw2801

1

Надеюсь, это может помочь кому-то.

Я столкнулся с той же проблемой, мой $_FILES['file']['tmp_name'] имеет правильные возвращения, а move_uploaded_file($_FILES['file']['tmp_name'],$destination_dir) ничего не возвращает. Поэтому я проверил эту проверку:

if(!is_writable($destination_dir)){ echo "error in dir"; } 

и получил сообщение «error in dir». Даже мой $destination_dir в move_uploaded_file был равен 777. Пройдя долгое время, я нашел это answer. Таким образом, эти две команды решить мою проблему:

sudo chmod -R 777 Ad_images/ 
sudo chcon -R -t httpd_sys_rw_content_t Ad_images/ 

Теперь is_writable($destination_dir) возвращает 1 и загрузка прошла успешно.

TL; Убедитесь, что ваш целевой каталог доступен для записи для php.

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