2013-07-22 7 views
0

Я пытаюсь загрузить файл на FTP-сервер. Он попадает в оператор if, который указывает, что каталог должен быть chmode 777, однако у меня есть вручную chmode 77 каждый каталог в ftp, а также добавление функции в код.Загрузка файла на FTP с помощью PHP - не будет записываться на сервер

Во-вторых, я хотел бы спросить о файлах .tmp, которые создаются после начала процесса загрузки. Они загружены на FTP? Если да, нужно ли также разрешать доступ к файлам .tmp вместе с файлами .mp3? Я довольно не знаю, что их использование в процессе на самом деле так, если кто-то может потратить время, чтобы объяснить это, что было бы очень полезно.

некоторые содержимое переменной:

$upload_path = /htdocs/site2/telemessages/en/Apologies 
$_FILES['userfile']['tmp_name'] = /tmp/phpwkfxrW 

Вот код, я использую, чтобы передать файл на FTP:

$ftp_server="***********"; 
$ftp_user_name="************"; 
$ftp_user_pass="***********"; 

// set up basic connection 
$conn_id = ftp_connect($ftp_server); 

// login with username and password 
if(ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)){ 

// Configuration - Your Options 
     $allowed_filetypes = array('.mp3','.tmp'); // These will be the types of file that will pass the validation. 
     $max_filesize = 2097152; // Maximum filesize in BYTES (currently 2MB). 

     $cutName = substr($_SESSION['dir'], 0, -1); 

     $upload_path = "htdocs/site/telemessages/en/". $_SESSION['dir']; 
     echo "upload path: ".$upload_path; // The place the files will be uploaded to (currently a 'files' directory). 


    $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); // Get the extension from the filename. 

    // Check if the filetype is allowed, if not DIE and inform the user. 
    if(!in_array($ext,$allowed_filetypes)) 
     die('The file you attempted to upload is not allowed.'); 

    // Now check the filesize, if it is too large then DIE and inform the user. 
    if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize) 
     die('The file you attempted to upload is too large.'); 

    // Check if we can upload to the specified path, if not DIE and inform the user. 
    if(!is_writable($upload_path)) 
     die('You cannot upload to the specified directory, please CHMOD it to 777.'); 

    // We'll start handling the upload in the next step 
    echo"FORCE: ".$_FILES['userfile']['tmp_name']; 
     //Upload the file to your specified path. 
    $result = move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename); 


    if(!$result) 
       { 
        return -1; 
       } 
       else 
       { 
        echo $result; 
        //SET PROPER READ PERMISSIONS 

        $result2 = chmod($upload_path, 0777); 
        echo "Result: ".$result2; 
        } 

}else{ 
echo "login failed"; 
} 

Спасибо за любую помощь заранее.

+1

$ upload_path = "htdocs/site/telemessages/en /". $ _SESSION [ 'реж']; - если у этого есть ведущий «/»? –

ответ

0

На первый взгляд, есть несколько вещей, которые могут вызывать проблемы.

$upload_path = /htdocs/site2/telemessages/en/Apologies 

Я собираюсь предположить, что на самом деле у него есть котировки вокруг этого кода. Если нет, это необходимо исправить.

Возможности:

  1. Веб-сервер не имеет доступа к этой папке. Я знаю, что некоторые серверные фермы используют NFS на нескольких серверах, и могут произойти странные действия. Вы можете проверить свою серверную компанию.
  2. Возможно, что /htdocs/site2/telemessages/en/Apologies фактически является файлом, а не каталогом, что может вызвать проблему.
  3. Замечание Пола Бейли выше: Возможно, вы пытаетесь ссылаться на путь из корневого каталога системы, когда он должен находиться в корневом каталоге приложения. Отсюда его комментарий о ведущем /.