Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
1

Ошибка "Cannot modify header information - headers already sent by" при выводе изображения в браузер

20.03.2016, 07:30. Показов 1434. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем. Уже понял, что тема заезженная, и я сначала хотел решить сам проблему, но все же в конце-концов пришел на форум

Написал такой скрипт:
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
<html>
 
   <head>
      <meta charset="utf-8">
      <title>Графика</title>
   </head>
   
<body>
<?php     
   function drawSea($image, $blue){
      for($x = 100;$x <= 300;$x += 20)
         imagefilledellipse($image, $x, -200, 20, 20, $blue);
   }
 
   $image = imagecreatetruecolor(400, 400);
   imagefill($image, 255, 255, 255);
      
   $blue = imagecolorallocate($image, 0, 0, 255);
   $yellow = imagecolorallocate($image, 250, 247, 131);
   $brown = imagecolorallocate($image, 191, 96, 0);
   $red = imagecolorallocate($image, 255, 0, 0);
   $black = imagecolorallocate($image, 0, 0, 0);
 
   drawSea($image, $blue);
   
   header("Content-type: image/png");
   
   imagepng($image);
   imagedestroy($image);
?>
</body>
 
</html>
Когда запускаю скрипт в браузере, выводит ошибку "Cannot modify header information - headers already sent by".

Испробовал уже всё. Писал изначально в Блокноте. Когда появилась ошибка, понял, что проблема может быть в кодировке, скачал Notepad++, написал в нем(кодировка UTF-8 без BOM) - ошибка осталась. Пробовал включать output_buffering, не помогло. Пустых строк перед <?php вроде нет.

Что я делаю не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2016, 07:30
Ответы с готовыми решениями:

Ошибка при авторизации Warning: Cannot modify header information - headers already sent
Здравствуйте. Помогите разобраться с авторизацией на сайте. Ругается на 19 строку. Echo до нее...

Ошибка Cannot modify header information - headers already sent
Всем привет) такая ошибка Warning: Cannot modify header information - headers already sent by...

Ошибка Warning: Cannot modify header information - headers already sent by...
Вижу надпись: Warning: Cannot modify header information - headers already sent by (output...

Вечная ошибка, Cannot modify header information - headers already sent by
Доброго времени суток, на днях подумал восстановить свой старый сайт. Конечно он работал целиком и...

Ошибка - Warning: Cannot modify header information - headers already sent
Помогите пожалуйста с задачкой, с php очень плохо, не могу разобраться...За ранее большое спасибо!...

6
116 / 117 / 52
Регистрация: 19.12.2014
Сообщений: 612
20.03.2016, 07:40 2
Лучший ответ Сообщение было отмечено Sh@dow777 как решение

Решение

Sh@dow777, кто же передает заголовки после передачи html разметки?
сделай вот так и убери html размету, оставь только
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php     
   function drawSea($image, $blue){
      for($x = 100;$x <= 300;$x += 20)
         imagefilledellipse($image, $x, -200, 20, 20, $blue);
   }
 
   $image = imagecreatetruecolor(400, 400);
   imagefill($image, 255, 255, 255);
      
   $blue = imagecolorallocate($image, 0, 0, 255);
   $yellow = imagecolorallocate($image, 250, 247, 131);
   $brown = imagecolorallocate($image, 191, 96, 0);
   $red = imagecolorallocate($image, 255, 0, 0);
   $black = imagecolorallocate($image, 0, 0, 0);
 
   drawSea($image, $blue);
   
   header("Content-type: image/png");
   
   imagepng($image);
   imagedestroy($image);
?>
1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
20.03.2016, 08:19 3
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Уже понял, что тема заезженная, и я сначала хотел решить сам проблему, но все же в конце-концов пришел на форум
Ну так почитайте внимательнее, специально для Вас тут есть закрепленная тема - Что означает предупреждение "headers already sent"

После того как прочитаете целиком, все вопросы отпадут.
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
20.03.2016, 08:32  [ТС] 4
lokilo,
Цитата Сообщение от lokilo Посмотреть сообщение
кто же передает заголовки после передачи html разметки?
Я

Спасибо, все понял, все работает. Но просто без разметки черная страница получается и белое, пока пустое изображение:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php     
   function drawSea($image, $blue_color){
      for($x = 100;$x <= 300;$x += 20)
         imagefilledellipse($image, $x, -200, 20, 20, $blue_color);
   }
 
   $image = imagecreatetruecolor(800, 600);
   $white = imagecolorallocate($image, 255, 255, 255);
   imagefill($image, 0, 0, $white);
      
   $blue_color = imagecolorallocate($image, 0, 0, 255);
   $yellow_color = imagecolorallocate($image, 250, 247, 131);
   $brown_color = imagecolorallocate($image, 191, 96, 0);
   $red_color = imagecolorallocate($image, 255, 0, 0);
   $black_color = imagecolorallocate($image, 0, 0, 0);
   
   header("Content-type: image/png; charset=utf-8");
   
   imagepng($image);
   imagedestroy($image);
?>
А я б хотел, чтоб все белым было, и на белом цветной рисунок какой-то. Как это можно сделать? Только тупо растянуть изображение на всю страницу? Больше никак?
Миниатюры
Ошибка "Cannot modify header information - headers already sent by" при выводе изображения в браузер  
0
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
20.03.2016, 08:37  [ТС] 5
pav1uxa, И по этой ссылке я всё читал.
Уже всё заработало, спасибо.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
20.03.2016, 08:53 6
Лучший ответ Сообщение было отмечено pav1uxa как решение

Решение

Цитата Сообщение от Sh@dow777 Посмотреть сообщение
А я б хотел, чтоб все белым было, и на белом цветной рисунок какой-то.
Если Вы хотите выводить картинку с помощью PHP, с html разметкой - просто разнесите это на разные файлы.

Например index.php:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
<html> 
   <head>
      <meta charset="utf-8">
      <title>Графика</title>
   </head>   
<body>
   <!-- тут вставляете ссылку на php-файл, который выводит картинку -->
   <!-- и применяете любые стили, html-разметку, атрибуты, цвет фона и т.д. -->
   <img src="img.php">
</body>
</html>
И отдельно img.php:
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
<?php
 
// Важно чтобы он начинался именно с "<?php", без всяких пробелом и других символов     
 
   function drawSea($image, $blue_color){
      for($x = 100;$x <= 300;$x += 20)
         imagefilledellipse($image, $x, -200, 20, 20, $blue_color);
   }
 
   $image = imagecreatetruecolor(800, 600);
   $white = imagecolorallocate($image, 255, 255, 255);
   imagefill($image, 0, 0, $white);
      
   $blue_color = imagecolorallocate($image, 0, 0, 255);
   $yellow_color = imagecolorallocate($image, 250, 247, 131);
   $brown_color = imagecolorallocate($image, 191, 96, 0);
   $red_color = imagecolorallocate($image, 255, 0, 0);
   $black_color = imagecolorallocate($image, 0, 0, 0);
   
   header("Content-type: image/png; charset=utf-8");
   
   imagepng($image);
   imagedestroy($image);
 
// В конце закрывающий "?>" не обязателен. Более того, его лучше даже не ставить.
// Это уменьшает вероятность того, что попадут какие-нибудь левые символы в вывод.
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
20.03.2016, 09:01  [ТС] 7
pav1uxa, Так и думал, что нужно 2 файла делать.
Спасибо большое!
0
20.03.2016, 09:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.03.2016, 09:01
Помогаю со студенческими работами здесь

Ошибка - Warning: Cannot modify header information - headers already sent
Выходит ошибка: Warning: Cannot modify header information - headers already sent by (output...

Ошибка:"Warning: Cannot modify header information - headers already sent by
Доброго времени суток! Я хотел протестить систему авторизации и регистрации, но после авторизации...

Вход в админку - ошибка: Cannot modify header information - headers already sent
Здраствуйте, делаю к курсовому пректу сайт, сказали делать по попову, все хорошо получалось но до...

Ошибка Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\do
Хотел сделать регистрацию (для себя, т.к. новичок), но при авторизации выдаёт указанное...

Ошибка Warning: Cannot modify header information - headers already sent by (output started at C:\OSPanel\domains\sotset
Подскажите пожалуйста в чем проблема! Уже все попробывал, даже поставил output_buffering = 4096...

Warning: Cannot modify header information - headers already sent в header('Location: /index.php');
Warning: Cannot modify header information - headers already sent by (output started at...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru