powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP 5.26) PHPExcel проблема с выгрузкой файла
32 сообщений из 32, показаны все 2 страниц
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987469
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Есть проблема и не могу понять, что послужило её причиной.
Написал программку с использованием PHPExcel, программка формирует отчёт и отдаёт на скачивание. Отчёт формируется корректно (сохранил файл на сервере, вполне нормальный). А вот скачать не получается, выдаёт файл с ошибкой. Раньше на этом же сервере всё работало, правда организованно было по-другому - файл сначала сохранялся, а потом отдавался. Сейчас в любом случаи отдаёт файл с ошибкой. На этом же сервере есть ещё один отчёт, который так же работает с PHPExcel (код отдающий файл один и тот же) и выгружает файл без проблем.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        header('Content-Description: File Transfer');
	header('Content-Type: application/vnd.ms-excel');
	header('Content-Disposition: attachment; filename='.$outn.basename($file));
	header('Content-Transfer-Encoding: binary');
	header('Expires: 0');
	header('Cache-Control: max-age=0');
	header('Pragma: public');
	include("classes/phpexcel/Classes/PHPExcel/Writer/Excel5.php");
	$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
	$objWriter->save('php://output');


Ошибка в полученном файле: Warning: realpath() [function.realpath]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/store/www/ofoms/data:.) in /store/www/ofoms/data/www/novofoms.ru/services/sofocl/classes/phpexcel/Classes/PHPExcel/Shared/File.php on line 136
В месте, куда ссылается ошибка написанно
// use ordinary built-in PHP function
// There should be no problem with the 5.2.4 Suhosin realpath() bug, because this line should only
// be called if we’re running 5.2.1 or earlier
Код: php
1.
return realpath(sys_get_temp_dir());


По идеи я не должен попадать на эту строку т.к. у меня 5.26
Помогите, пожалуйста!
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987472
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, надо задать папку для временных файлов где-то в пределах аккаунта или корня сайта.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987478
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

Хм, а почему другой отчёт работает? Код такой же... И раньше выгрузка работала
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        SaveXls($file,$objPHPExcel);
 	if (file_exists($file)) //если файл существуем отдаём на скачивание
	{
		header('Content-Description: File Transfer');
		header('Content-Type: application/octet-stream');
		header('Content-Disposition: attachment; filename='.$outn.basename($file));
		header('Content-Transfer-Encoding: binary');
		header('Expires: 0');
		header('Cache-Control: must-revalidate');
		header('Pragma: public');
		header('Content-Length: ' . filesize($file));
		flush();
		readfile($file);
		exit;
	}


А сейчас даже так не работает.... И почему он лезет в строку кода в которую не положено ему заглядывать?
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987491
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

И ещё на моём локальном сервере работает без проблем.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987711
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIchPlна моём локальном сервере работает без проблемАга, забыли добавить что в Вашем присутствии ))) Настройки серверов разные, наверняка. Сравните.


MIchPlИ почему он лезет в строку кода в которую не положено ему заглядывать?А с чего Вы взяли, что не положено? Раз заглядывает - значит есть для того условия/причины.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987732
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleMIchPlИ почему он лезет в строку кода в которую не положено ему заглядывать?А с чего Вы взяли, что не положено? Раз заглядывает - значит есть для того условия/причины.
Исхожу из коментариев к строке кода.
MIchPlВ месте, куда ссылается ошибка написанно
// use ordinary built-in PHP function
// There should be no problem with the 5.2.4 Suhosin realpath() bug, because this line should only
// be called if we’re running 5.2.1 or earlier
Код: php
1.
return realpath(sys_get_temp_dir());


По идеи я не должен попадать на эту строку т.к. у меня 5.26
Помогите, пожалуйста!
vkleMIchPlна моём локальном сервере работает без проблемАга, забыли добавить что в Вашем присутствии ))) Настройки серверов разные, наверняка. Сравните.
На том же сервере есть ещё программа которая работает. Вызов точно такой же (копи паст). На локальном работает всё (и тот отчёт и др.)
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987758
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIchPlИсхожу из коментариев к строке кода.Более правильным будет исходить из реального кода и реального сервера.
MIchPlесть ещё программа которая работает. Вызов точно такой же (копи паст).Не аргумент. Даже близко не аргумент. Директория другая, например.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987759
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIchPlНа локальном работает всё (и тот отчёт и др.)Так почему бы не пользоваться локальным сервером? ;-)
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987778
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

Директория та же. В том то и проблема. И до этого когда сохранял файл на сервере, а потом отдавал всё было хорошо. Сейчас не проходит. Для теста написал тестовый скрипт: просто открывает xls шаблон, а потом сразу одаёт мне. Ошибка та же.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
function OpenXls($templ)
	{
		set_include_path(get_include_path() . PATH_SEPARATOR .'classes/phpexcel/Classes/');
		include_once 'classes/phpexcel/Classes/PHPExcel/IOFactory.php';
		$objPHPExcel = PHPExcel_IOFactory::load($templ);
		return $objPHPExcel;
	}
	
	function SaveXls($outn,$objPHPExcel)//outn-имя выходного файла,objPHPExcel-экземпляр класса
	{
		include("classes/phpexcel/Classes/PHPExcel/Writer/Excel5.php");
		$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
		$objWriter->save($outn);
	}

	$x=OpenXls('reports/templ_kv3_12.xls');
	header('Content-Description: File Transfer');
	header('Content-Type: application/vnd.ms-excel');
	header('Content-Disposition: attachment; filename=templ_kv3_12.xls');
	header('Content-Transfer-Encoding: binary');
	header('Expires: 0');
	header('Cache-Control: max-age=0');
	header('Pragma: public');
	SaveXls('php://output',$x);


В коментарии сказанно что программа не зайдёт в эту строку если у меня версия php 5.2.1 или раньше.
Код функции в библиотеке
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
	/**
	 * Get the systems temporary directory.
	 *
	 * @return string
	 */
	public static function sys_get_temp_dir()
	{
		// sys_get_temp_dir is only available since PHP 5.2.1
		// http://php.net/manual/en/function.sys-get-temp-dir.php#94119

		if ( !function_exists('sys_get_temp_dir')) {
			if ($temp = getenv('TMP') ) {
				if (file_exists($temp)) { return realpath($temp); }
			}
			if ($temp = getenv('TEMP') ) {
				if (file_exists($temp)) { return realpath($temp); }
			}
			if ($temp = getenv('TMPDIR') ) {
				if (file_exists($temp)) { return realpath($temp); }
			}

			// trick for creating a file in system's temporary dir
			// without knowing the path of the system's temporary dir
			$temp = tempnam(__FILE__, '');
			if (file_exists($temp)) {
				unlink($temp);
				return realpath(dirname($temp));
			}

			return null;
		}

		// use ordinary built-in PHP function
		//	There should be no problem with the 5.2.4 Suhosin realpath() bug, because this line should only
		//		be called if we're running 5.2.1 or earlier
		return realpath(sys_get_temp_dir());
	}
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987816
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
open_basedir установлен
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987837
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIchPlВ коментарии сказанно что программа не зайдёт в эту строку если у меня версия php 5.2.1 или раньше.На самом деле версия там не проверяется. Проверяются настройки сервера. Прочтите код, который Вы сюда запостили.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987876
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

Подскажите как решить проблему!!!!)
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987939
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
MIchPlПодскажите как решить проблемуВ сообщении об ошибке всё что надо написано. Параметр open_basedir (в php.ini наверное, но может и в апачевском конфиге) запрещает доступ к /tmp
Надо или менять open_basedir, или не лезть в /tmp
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987947
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MIchPlvkle,

Подскажите как решить проблему!!!!)Перечитайте второй пост в этом топике.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37987986
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleДумаю, надо задать папку для временных файлов где-то в пределах аккаунта или корня сайта.
Как-то так?
Код: php
1.
ini_set('upload_tmp_dir','tmp/');
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988015
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
MIchPl, 'upload_tmp_dir' тут причем?
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988035
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?,

Точно жалуется на open_basedir.
Код: php
1.
ini_set('open_basedir',realpath('tmp/'));


Как считаете так?
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988036
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
MIchPlт.к. у меня 5.26такой версии PHP не существует.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988050
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
MIchPl?,

Точно жалуется на open_basedir.
Код: php
1.
ini_set('open_basedir',realpath('tmp/'));


Как считаете так?Ну поскольку open_basedir используется для ограничения доступа в целях безопасности, менять ее в runtime вам не дадут. Только конфиг править.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988053
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?,

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

?MIchPlт.к. у меня 5.26такой версии PHP не существует.

сори точку не поставил PHP Version 5.2.6-1+lenny13
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988062
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?Ну поскольку open_basedir используется для ограничения доступа в целях безопасности, менять ее в runtime вам не дадут. Только конфиг править.
Конфиг поправить мне не дадут, возможно получится обратиться по зданному пути?
И почему из той же самой директории тот же самый код не вызывает ошибку?
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988074
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
MIchPlКонфиг поправить мне не дадутПопытайтесь обратиться в техподдержку.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988086
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?,

MIchPlИ почему из той же самой директории тот же самый код не вызывает ошибку?
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988113
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
MIchPl, что значит тот же самый код? Вот сделали две копии одного файла, и одна работает, а другая нет.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988126
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?,

Да именно так я просто скопировал данную функцию. К тому же это ошибка выпадает из библиотеки, которую я не менял.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988141
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?,

Сейчас откатил к старому состоянию программы и всё работает значит проблема не в настройках конфига.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988171
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
MIchPl, и в чем состоит откат к старому состоянию, если код не менялся?
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988268
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм этот код не работает:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
	        SetActivP($countlist+3,$objPHPExcel);
		ob_clean();
		header('Content-Description: File Transfer');
		header('Content-Type: application/vnd.ms-excel');
		header('Content-Disposition: attachment; filename='.$outn.basename($file));
		header('Content-Transfer-Encoding: binary');
		header('Expires: 0');
		header('Cache-Control: max-age=0');
		header('Pragma: public');
		SaveXls('php://output',$objPHPExcel);
		ob_end_clean();


А этот работает:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
                SetActivP($countlist+3,$objPHPExcel);
		SaveXls($file,$objPHPExcel);
		if (file_exists($file)) 
		{
			header('Content-Description: File Transfer');
			header('Content-Type: application/octet-stream');
			header('Content-Disposition: attachment; filename='.$outn.basename($file));
			header('Content-Transfer-Encoding: binary');
			header('Expires: 0');
			header('Cache-Control: must-revalidate');
			header('Pragma: public');
			header('Content-Length: ' . filesize($file));
			ob_clean();
			flush();
			readfile($file);
			exit;
                        ob_end_clean();
		}
		


так и не понимаю в чём проблема.
Проблема возникает только в этом куске.
Первый код тоже работает только во втором отчёте.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988271
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?,

Код менялся, но вывод оставался такой же.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988293
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
MIchPl, ну в какой-то момент PHPExcel понадобилось создать временный файл. Может там от объема данных зависит или еще от чего другого, чтобы наверняка сказать, надо исходники смотреть. А записть в каталог для времменных файлов запрещена настройкой open_basedir.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37988312
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?,

Спасибо. Сейчас пройдут кв. отчёты можно будет поразбираться.
...
Рейтинг: 0 / 0
(PHP 5.26) PHPExcel проблема с выгрузкой файла
    #37989819
MIchPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто заменил эту функцию в библиотеке, внаглую прописал адрес до временной папки. Но вопрос остался как автоматически получить адрес? ИМХО это плохое решение, но лучше пока не придумал.
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP 5.26) PHPExcel проблема с выгрузкой файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]