2012-05-08 5 views
0

通常の方法でCodeIgniter 2.0.2で1つのファイルをアップロードしようとしています。 ​​3210関数がtrueを返しますが、ディレクトリにファイルが表示されません。 ディレクトリのアクセス許可は、(以下のコードでは示されていない他の診断を実行した後に)うまく表示されるため、ファイルがアップロードディレクトリに表示されていないとは限りません。 ここにコントローラとビューコードがあり、CIドキュメントから直接適合しています。CodeIgniterファイルアップロードブラックホール

コントローラー:

function do_upload_sql(){ 
    // create directory 
    if (! is_dir(BACKUP_DIR)) { 
     mkdir(BACKUP_DIR, 0777); 
    } 
    // or if it exists and has restricted file permissions, change them 
    elseif(fileperms(BACKUP_DIR)!=0777){ 
     chmod(BACKUP_DIR, 0777); 
    } 

    $config['upload_path'] = BACKUP_DIR; 
    $config['allowed_types'] = 'backup'; // an SQL backup file type 
    $config['overwrite'] = TRUE; 
    $this->load->library('upload', $config); 
    //$this->upload->initialize($config); //redundant, so commenting out 
    if (! $this->upload->do_upload()) 
    { 
     $data['action'] = 'c_backup_restore/do_upload_sql'; 
     $tab_error = array('error' => $this->upload->display_errors()); 
     $data['error'] = $tab_error['error']; 
     $this->load->view('common/header'); 
     $this->load->view('v_upload_sql', $data); 
    } 
    else 
    { 
     echo "success"; // yes it's getting here, but i get no file! 
     $data = array('upload_data' => $this->upload->data()); 
     $file_upload = $data["upload_data"]; 
     $this->restore_backup($file_upload); // go do something useful with the file 
    } 
} 

ビュー:

<p>Select the backup file</p> 
<div class="not_success"><?php echo $error;?></div> 
<?php echo form_open_multipart($action);?> 
<input type="file" name="userfile" size="30" /> 
<input type="submit" value="Upload" /> 
</form> 
+0

どのようなエラーが表示されますか? 'BACKUP_DIR'はどこで定義されていますか?あなたは '.backup'ファイルタイプをアップロードしていますか? '$ config ['allowed_types']'はおそらく 'sql | bkup | gz'か、SQLバックアップをアップロードしている場合にはそれを拡張するものでなければなりません。 – Seabass

+0

@Zenbait私はエラーは発生しませんが、どちらもファイルをサーバーにアップロードすることはできません。それが奇妙な理由です。 'BACKUP_DIR'は' application/config/constants.php'で定義されています。はい、 '.backup'ファイルをアップロードしています。私は '$ config ['allowed_types'] = '*''で試してみたのと同じ動作をしました。 –

+0

Hm。 (config.phpの '$ config ['log_threshold'] = 4')ログオンし、何かをアップロードしようとしたときにどのメッセージ/エラーCIがダンプするかを見てください。 '$ this-> upload-> data()'は何を返しますか? '$ this-> upload-> do_upload()'は何を返しますか? – Seabass

答えて

0

私はxDebug profilerを使用してバグを発見しました。 さらに下流のネイティブPHP関数chdir(path)が問題であることが判明しました。 @ qwertzmanのpaths in CIへのリンクは、ハングアップがなぜ発生するのかを正確に判断するのに役立つかもしれません。