Задать вопрос
Quber
@Quber
PHP Team lead

Как устранить ошибку open_basedir при генерации XSL документа (использую PHPExcel)?

На локальном окружении генерация документа проходит нормально. На боевом сервере, после генерации документа, пытаюсь его открыть в Excel. Выскакивает предупреждение "Формат файла 'example.xsl' не соответствует разрешению файла. Возможно файл повреждён или небезопасен. Открыть файл?" После того как он открывается, получается внутри такое содержимое:
600a41fa188446238239a61ea99d8781.jpgкликабельно
Насколько я понял, при генерации происходит ошибка:
Warning:  realpath() [function.realpath]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/var/www/ekker/data:.) in

Пробовал гуглить, но не могу найти решения. Советуют отключить open_basedir. Однако в целях безопасности, делать этого не хочется. Есть ли другой вариант решения проблемы?

Содержимое файла, который генерирует документ
<?php

require_once 'src/vendor/PHPExcel/PHPExcel.php';
require_once 'src/vendor/PHPExcel/PHPExcel/Writer/Excel5.php';

date_default_timezone_set('Asia/Vladivostok');

$xls = new PHPExcel();

$rows = 15;

$xls->setActiveSheetIndex(0);
$sheet = $xls->getActiveSheet();
$sheet->setTitle('Consulting');

$filename = "result.xls";

header ( "Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT" );
header ( "Cache-Control: no-cache, must-revalidate" );
header ( "Pragma: no-cache" );
header ( "Content-type: application/vnd.ms-excel;" );
header ( "Content-Disposition: attachment; filename=" . $filename );

$objWriter = new PHPExcel_Writer_Excel5($xls);
$objWriter->save('php://output');
  • Вопрос задан
  • 5132 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Quber
@Quber Автор вопроса
PHP Team lead
Решил проблему другим путём.
В ispmanager пользователю дал права использовать PHP как CGI.
Далее в "www домены" выбираем нужный домен, нажимаем изменить и выбираем пункт "PHP как CGI"
Далее всё заработало.. правда в моём случае, еще необходимо было в начале скрипта вставить функцию:
date_default_timezone_set('Asia/Vladivostok');
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ZloyHobbit
@ZloyHobbit
stackoverflow.com/questions/1846882/open-basedir-r...
У вас путь к /tmp запрещен и php не может создать временный файл.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы