Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP 5.26) PHPExcel проблема с выгрузкой файла / 25 сообщений из 32, страница 1 из 2
08.10.2012, 08:41:07
    #37987469
MIchPl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP 5.26) PHPExcel проблема с выгрузкой файла
Добрый день. Есть проблема и не могу понять, что послужило её причиной.
Написал программку с использованием 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
08.10.2012, 08:49:12
    #37987472
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP 5.26) PHPExcel проблема с выгрузкой файла
Думаю, надо задать папку для временных файлов где-то в пределах аккаунта или корня сайта.
...
Рейтинг: 0 / 0
08.10.2012, 08:54:22
    #37987478
MIchPl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP 5.26) PHPExcel проблема с выгрузкой файла
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
08.10.2012, 09:12:23
    #37987491
MIchPl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP 5.26) PHPExcel проблема с выгрузкой файла
vkle,

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


MIchPlИ почему он лезет в строку кода в которую не положено ему заглядывать?А с чего Вы взяли, что не положено? Раз заглядывает - значит есть для того условия/причины.
...
Рейтинг: 0 / 0
08.10.2012, 11:17:55
    #37987732
MIchPl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP 5.26) PHPExcel проблема с выгрузкой файла
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
08.10.2012, 11:26:47
    #37987758
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP 5.26) PHPExcel проблема с выгрузкой файла
MIchPlИсхожу из коментариев к строке кода.Более правильным будет исходить из реального кода и реального сервера.
MIchPlесть ещё программа которая работает. Вызов точно такой же (копи паст).Не аргумент. Даже близко не аргумент. Директория другая, например.
...
Рейтинг: 0 / 0
08.10.2012, 11:27:18
    #37987759
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP 5.26) PHPExcel проблема с выгрузкой файла
MIchPlНа локальном работает всё (и тот отчёт и др.)Так почему бы не пользоваться локальным сервером? ;-)
...
Рейтинг: 0 / 0
08.10.2012, 11:38:06
    #37987778
MIchPl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP 5.26) PHPExcel проблема с выгрузкой файла
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
08.10.2012, 11:52:02
    #37987816
MIchPl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP 5.26) PHPExcel проблема с выгрузкой файла
open_basedir установлен
...
Рейтинг: 0 / 0
08.10.2012, 11:58:48
    #37987837
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP 5.26) PHPExcel проблема с выгрузкой файла
MIchPlВ коментарии сказанно что программа не зайдёт в эту строку если у меня версия php 5.2.1 или раньше.На самом деле версия там не проверяется. Проверяются настройки сервера. Прочтите код, который Вы сюда запостили.
...
Рейтинг: 0 / 0
08.10.2012, 12:13:11
    #37987876
MIchPl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP 5.26) PHPExcel проблема с выгрузкой файла
vkle,

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

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

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


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

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


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

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

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

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

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

Да именно так я просто скопировал данную функцию. К тому же это ошибка выпадает из библиотеки, которую я не менял.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP 5.26) PHPExcel проблема с выгрузкой файла / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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