Скрипт php не выгружает файл JPG

Rezchik

Новичок
Скрипт php не выгружает файл JPG

В переменную HTTP_RAW_POST_DATA из флеша передается изображение.
Код, который ниже, должен сохранить на локальную машину файл в формате JPG.
На моем сервере этот код работает неверно - файл сохраняется на локальную машину, но он не читается. На других серверах проверяли, код работает правильно, файл сохраняется в формате JPG. В чем может быть дело?

флаг включен - php_flag always_populate_raw_post_data - On



<?php
$image_data = $GLOBALS["HTTP_RAW_POST_DATA"] ;
$filename_to_save = "creative/image" . rand() . ".jpg";


if(isset($image_data)){
$jpg_file = fopen($filename_to_save, "wb") or die("File not opened!");

if($jpg_file){
set_file_buffer($jpg_file, 200);
fwrite($jpg_file, $image_data);
fclose($jpg_file);
}
}
?>
 

tony2001

TeaM PHPClub
>файл сохраняется на локальную машину, но он не читается.
"не читается" - ?
файл открывал редактором? что в нём? чем он отличается от оригинала?
 

Rezchik

Новичок
открывал результирующий файл JPG разными просмотрщиками - результат один и тот-же - JPEG datastream contains no image. На сервере в каталоге /creative этот файл также сохраняется битым.


Wicked, спасибо, опечатался здесь. К теме отношения не имеет
 

Wicked

Новичок
просмотрщиками-то открывал, а текстовым редактором, похоже, нет :)
в конце концов, сходится ли размер файла? сходится ли md5?
 

walerka

Новичок
Привет всем и добрый вечер! я с Rezchik делаем один проект, так вот не получаеться сделать сохранение изображения.

Для сохранения используеться пхп скрипт который привел Rezchik в первом посте.

Решили проверить как работает данный скрипт на других серверах, для этого залили вот такое приложение на сервер:

http://sound-mix.110mb.com/test/png_encoder.swf

дальше рисуем и потом то что нарисовали, жмем на Send img и в новом окне появляеться то что нарисовали, адрес сформированой картинки http://sound-mix.110mb.com/test/my_avatar.png

далее заливаем данный пример на хостинг другой: http://derevo-art.ru/1/png_encoder.swf, логин и пароль для входа 123, права доступа на директорию "1" стоит полный, т.е. аттрибуты 777, и дальше так же рисуем и жмем Send img, в новом окне картинка не отображеться.

Объясните почему такое явление происходит, пример полного скрипта я даже внизу привожу:
PHP:
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

$image_data = $GLOBALS["HTTP_RAW_POST_DATA"] ;
$filename_to_save = "my_avatar.png";

if(isset($image_data)){
	$png_file = fopen($filename_to_save, "wb") or die("File not opened!");
	if($png_file){
		  set_file_buffer($png_file, 20);
		  fwrite($png_file, $image_data);
		  fclose($png_file);
	}
}
	
	echo("<br><img src=".$filename_to_save."?".time().">");
?>
пример скачан данный с адреса: http://ink.envisionext.com/swf2png/index.php и залит для проверки на разные сервера

Обясните причину разного отображения данных. Спасибо
 

walerka

Новичок
Beavis не в этом дело, я привел конкретный пример с ссылками, почему на одном сервере работает, а на другом где должно работать не работает, и попросил помочь разобраться
 

walerka

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

Wicked

Новичок
файлы ничем не отличаються, просто залиты на разные сервера, это единственное отличие.
а причем тут апач?
вы ЗАЛИВАЛИ один и тот же файл, или вы уверены в том, оказавшись после этого на сервере, файл остался идентичным заливаемому оригиналу (размер, md5)?

если второе, то непонятно, причем тут вообще пхп - он свою работу сделал нормально. С тем же успехом можно было залить через FTP или еще как...
 

tony2001

TeaM PHPClub
"а воз и ныне там" (с)
я задал вопросы и на них всё еще нет ответа.
 

walerka

Новичок
отвечу на вопросы для tony2001, файл сохраняется на локальную машину, но он не читается, если файл находиться на http://derevo-art.ru/1/,
а если файл лежит на http://sound-mix.110mb.com/test/ - то работает все.

файл открывал редактором? да открывал!

что в нём? если файл взят с хостинга http://derevo-art.ru/1/ - то при просмотре там пхп код, если файл взят с http://sound-mix.110mb.com/test/ то там при просмотре бинарный код видим, а при открытии вьювером, видим картинку

чем он отличается от оригинала? дело в том что при сохранение картинки если сравнивать с 2-х серверов, то размеры одинаковые, но только на одном сервере мы видим что это именно картинка, а на другом вроде тоже картинка, но она не может сформироваться
 

Dovg

Продвинутый новичок
то при просмотре там пхп код
дело в том что при сохранение картинки если сравнивать с 2-х серверов, то размеры одинаковые
может у вас там установлен кодогенератор, который генерирует нужное количество кода (чтобы размеры совпадали)

откройте для себя diff, md5file
хоть узнаете в чем отличие :)
 

tony2001

TeaM PHPClub
>если файл взят с хостинга http://derevo-art.ru/1/ - то при просмотре там пхп код
какой? откуда он там?

>на другом вроде тоже картинка, но она не может сформироваться
мы про один файл говорим?
как она может "сформироваться", если там php-код?
 

Rezchik

Новичок
Коллеги, давайте локализуем проблему. На одном сервере в переменную HTTP_RAW_POST_DATA записывается изображение из флеша, а на другом (моем) - php-скрипт. Вот и весь вопрос - почему так?

скрипт скачки работает один и тот-же на обоих серверах.
 

Активист

Активист
Команда форума
Ты как-то странно изъясняешься.

Ты можешь написать сюда первые 4-строчки из обоих файлов (не важно бинарный или нет), при просмотре в текстовом редакторе.
 

walerka

Новичок
вот адрес картинки что получаеться когда сохраням картинку с адреса http://derevo-art.ru/, вот такая она получатеься:
- при просмотре картинку не видим, но место под нее есть

а вот картинка с адреса sound-mix.110mb.com:
- здесь есть картинка

аттач обоих картинок прилагаю:
аттач: http://sound-mix.110mb.com/attach.zip
 

prolis

Новичок
Покажите первые строчки вывода скрипта на битом сервере:
<?php
$image_data = $GLOBALS["HTTP_RAW_POST_DATA"] ;
echo $image_data;
?>
 
Сверху