Сохранение сгенерированного pdf файла прямо в папку с папкой - Codeigniter

Я хотел бы сгенерировать и отправить созданный PDF-файл в папку, но я получаю сообщение об ошибке, эта ошибка:

A PHP Error was encountered

Severity: Warning

Message: file_put_contents(http://localhost/NQCL1/workbooks/NDQA000000001/NDQA000000001.pdf) [function.file-put-contents]: failed to open stream: HTTP wrapper does not support writeable connections

Filename: libraries/Dompdf_lib.php

Line Number: 13

Dompdf_lib.php //файл библиотеки

class Dompdf_lib extends Dompdf{

        function createPDF($html, $filename='', $stream=TRUE){  
            $this->load_html($html);
            $this->render();
            $this->set_paper('a4', 'potratit');
            if ($stream) {
                //$this->stream($filename.".pdf"); - This works just ok
                file_put_contents(base_url().'workbooks/s'.$filename.'/'.$filename.".pdf", $this->output()); 

            } else {
                return $this->output();
            }
        }

}

coa.php //контроллер

function generateCoaDraft($labref,$offset=0) {
    // error_reporting(1);
    $data['labref'] = $labref = $this->uri->segment(3);
    $data['information'] = $this->getRequestInformation($labref);
    $data['tests_requested'] = $this->getRequestedTests($labref);
    $data['trd'] = $this->getRequestedTestsDisplay2($labref);
    $data['compedia_specification'] = $this->getCOABody($labref);
   $html = $this->load->view('coa_v', $data, true);
   $this->dompdf_lib->createPDF($html, $labref);
}

Эта строка отлично работает, если я использую ее вместо file_put...., если я скажу STREAM=FALSE, она вернет пустую страницу

$this->stream($filename.".pdf"); 

person alphy    schedule 21.05.2013    source источник
comment
Просто удалите $this-› перед командой записи файла. file_put_contents() — это нативная функция PHP.   -  person Rooneyl    schedule 21.05.2013
comment
Я удалил $this и теперь новая ошибка подключения   -  person alphy    schedule 21.05.2013
comment
Эта ошибка связана с использованием http в пути к файлу, вы используете base_url() в пути. Оформить заказ stackoverflow.com/questions/7490164/   -  person Rooneyl    schedule 21.05.2013
comment
Большое спасибо Рунейл, теперь я понял это правильно   -  person alphy    schedule 21.05.2013


Ответы (2)


file_put_contents — это встроенная функция PHP, поэтому измените строку к;

file_put_contents('workbooks/s'.$filename.'/'.$filename.".pdf", $this->output());

Добавляя к нему $this->, система пытается найти функцию, принадлежащую классу (которого не существует), отсюда и ошибка.

person Rooneyl    schedule 21.05.2013

Я понял, что пытаюсь связаться с сервером через HTTP, я изменил код, указав только прямой путь, и это сработало, спасибо, парень.

это:

file_put_contents(base_url().'workbooks/s'.$filename.'/'.$filename.".pdf", $this->output());

к этому:

file_put_contents('workbooks/s'.$filename.'/'.$filename.".pdf", $this->output());
person alphy    schedule 21.05.2013