Codeigniter: write_file() возвращает false

public function ExportCSV()
{
    // THIS PART IS WORKING
    $this->load->dbutil();
    $this->load->helper('file');
    $delimiter = ',';
    $newline = "\n";
    $enclosure = '"';
    $filename = "tamp.csv";
    $query = "SELECT politician.id, politician.ident, party.abbr, politician.id_image, politician.name, politician.surname, politician.personal_birth, politician.home_city, politician.political_function  
      FROM politician 
      INNER JOIN party 
      WHERE party.id = politician.id_party 
      LIMIT 10000";
    $result = $this->db->query($query);
    $data = $this->dbutil->csv_from_result($result, $delimiter, $newline, $enclosure);

    // data IS CORRECT
    // THIS PART NOT WORKING: write_file() returns false
    if ( ! write_file(APPPATH."/assets/media/upload/tamp.csv", $data, 'r+'))
    {
        echo 'Unable to write the file';
    }
    else
    {
        echo 'File written!';
    }
}

Переменная $data содержит правильный вывод, но write_file() возвращает false.

Каталог /assets/ находится в основном каталоге проекта codeigniter.

Мои вопросы:

  • Is this function returning false because I don't have the permission to write in this directory?
    • If yes, what should I do?
  • В какой каталог я должен записать этот файл, так как я хотел бы, чтобы он был общедоступным?

person Community    schedule 05.11.2016    source источник
comment
Что, если вы просто попробуете... write_file(./assets/media/upload/tamp.csv, $data, 'r+') с папкой ресурсов прямо из корня вашего документа, а не под вашим APPPATH.   -  person TimBrownlaw    schedule 05.11.2016
comment
Во-первых, все активы должны быть вне папки приложения. Тогда попробуйте FCPATH . "assets/media/upload/tamp.csv"   -  person Mr. ED    schedule 05.11.2016


Ответы (1)


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

Тогда я бы рекомендовал использовать FCPATH $data = "Some file data";

 if (write_file(FCPATH . '/document/text.txt', $data) == FALSE)
 {
     echo 'Unable to write the file';

 } else {
     echo 'File written!';                           
 }

Мое приложение каталога

 document

 system

 index.php
person Rana Ghosh    schedule 05.11.2016