file_exists(): ограничение open_basedir действует. Файл(/tmp/log.htm ) не находится в пределах разрешенного пути (ов)

#php #codeigniter #dompdf

#php #codeigniter #dompdf

Вопрос:

Я создаю PDF-файл, генерирующий приложение, используя CodeIgniter и DOMPDF. На моем локальном хостинге он работает нормально, но когда я перемещаю эти файлы на сервер, он выдает мне следующую ошибку. Пожалуйста, как я могу решить эту проблему?

 Severity: Warning

Message: file_exists(): open_basedir restriction in effect. File(/tmp/log.htm) is not within the allowed path(s): (/home/admin/web/fryapps.com/public_html:/home/admin/tmp)

Filename: src/Dompdf.php

Line Number: 714

Backtrace:

File: /home/admin/web/fryapps.com/public_html/application/libraries/dompdf/src/Dompdf.php
Line: 714
Function: file_exists

File: /home/admin/web/fryapps.com/public_html/application/controllers/Createpdf.php
Line: 31
Function: render
  

ошибка в пути к изображению:https://imgur.com/a/zQo1873

это мой код:

 $htmlcontent= $this->load->view('admin/test',$data,true);              
$this->pdf->loadHtml($htmlcontent);
$this->pdf->render();
$this->pdf->stream("report.pdf",array("Attachment=>0"));
  

кто-нибудь, пожалуйста, помогите мне решить эту проблему?

Комментарии:

1. укажите абсолютный путь /home/admin/tmp/<имя файла>

2. @kuh-chan, где я должен это отредактировать?

3. Как решить эту проблему?

4. когда вы заглянете в код Dompdf, вы увидите, что он создаст logOutputFile . Вы можете установить его в массиве параметров

5. еще $this->pdf->set_option('logOutputFile', $this->getTempDir() . DIRECTORY_SEPARATOR . 'log.htm'); подождите… почему я читаю документы для вас?

Ответ №1:

создайте папку «/home/admin/web/example.com/tmp»

Используйте его

 $this->pdf->set_options('tempDir','/home/admin/web/example.com/tmp');
  

или

Использование класса sys_get_temp_dir();

Установите его в VirtualHost для example.com

 php_admin_value sys_temp_dir "/home/admin/web/example.com/tmp"
  

Комментарии:

1. мой домен fryapps.com итак, мне нужно создать папку tmp в корневом каталоге? и в каком файле я должен установить это $this-> pdf-> set(‘tempDir’,’/home/admin /web/example.com/tmp’);

2. Вызов неопределенного метода Pdf::set()

3. существует github.com/dompdf/dompdf/blob/master/src/Options.php это внутренний класс, используйте set_options github.com/dompdf/dompdf/blob/master/src/Dompdf.php

Ответ №2:

Я решил эту проблему, обновив php-версию cpanel.