2015-02-06 5 views
-1

Я пытаюсь загрузить файл с моего сайта на свой сервер, но не могу найти, почему и где я делаю это неправильно.Загрузка файла на сервере apache через php

Вот мой код PHP:

$fn = $_FILES['file']['name']; 
    if (is_writable('.')) { 
     echo "Writable<BR>"; 
    } else { 
     echo "Not writable<BR>"; 
    } 
    $upfile = './'.basename($fn); 
    echo $upfile.'<BR>'; 
    shell_exec("echo 'baaaaah' > test.baaaah"); 
    $f = $_FILES['file']['tmp_name']; 
    echo $f.'<BR>'; 
    if (is_uploaded_file($f)) { echo "uploaded<BR>"; } else { echo "not uploaded<BR>";} 
    $com = "test - f ".$f." && echo 'F' || echo 'N'"; 
    echo $com.'<BR>'; 
    echo shell_exec($com).'<BR>'; 
    if (move_uploaded_file($f,$uploadfile)) { 
     echo "File transfer OK<BR>"; 
    } else { 
     echo "File transfer NOK<BR>"; 
    } 
    print_r($_FILES); 

А вот сайт выход:

Writable 
./flag.jpg 
/tmp/phpyKvhEz 
uploaded 
test - f /tmp/phpyKvhEz && echo 'F' || echo 'N' 
N 
File transfer NOK 
Array ([file] => Array ([name] => flag.jpg [type] => image/jpeg [tmp_name] => /tmp/phpyKvhEz [error] => 0 [size] => 1660)) 

Так первая вещь, которую я могу проверить, если моя папка доступна для записи (это не предназначено, чтобы быть, но я «» переместился сюда, потому что папка, в которой я хочу, тоже не работала (такое же поведение, как «.» через ...)) => check

Затем я пытаюсь открыть файл shell_exec здесь juste, чтобы быть уверенным => проверить, файл на сервере

Затем я проверяю, если временный файл создается на сервере: - проверить, во всяком случае is_uploaded думает файл здесь - не проверял, но тест на временный файл не работает (а так как файл не должны быть устранены до конца сценария он должен увидеть файл здесь IMHO?)

Тогда я пытаюсь сделать move_uploaded_file => не проверить

И я напечатает $ _FILES, который не показывает ничего подозрительного (error = 0, имена файлов соответствуют тем, что я вижу ранее).

Я не могу понять, что идет не так, ни где ошибка может исходить от> <

+0

Вы, кажется, не определяете имя файла назначения '$ uploadfile' в любом месте. Вероятно, вы хотите '$ upfile'. – jeroen

ответ

0

$ uploadfile не определен в коде. Измените его или установите для этого параметра. и он должен работать.

+0

Не могу поверить, что я пропустил это ... Я изменил его на $ upfile, и я действительно работал – Jusanne