Вопрос №56057 от пользователя Вячеслав Макаров в уроке «PHP CGI», курс «Веб-разработка на PHP»

Вячеслав Макаров

По теории вопрос...

<?php

echo 'hello';
/* Этот пример приведёт к ошибке. Обратите внимание
 * на тег вверху, который будет выведен до вызова header()
 */
header('Location: http://www.example.com/');

На локальном сервере PHP в Ubuntu 20.04 не приводит к ошибке такая конструкция... Хоть через браузер вызываем http://localhost:8080, хоть curl --head (-v) localhost:8080. И $_SERVER выводит, ни на что не ругается. Или я что-то не так понял? И еще заметил одну странность... http://localhost:8080/?firstName=Makarov&lastName=Vacheslav выводит только первую пару ключ=значение

Array
(
    [firstName] => Makarov
)
* Closing connection 0

А браузер выводит корректно. Ну, и последнее... В index.php расставляю PHP_EOL. Браузер не реагирует на эту конструкцию, все одной строкой выводит. Тут тегами html нужно пользоваться?

3 0

Roman Ashikov

С локальными проблемами бывает очень сложно. Так как у меня нет доступа к вашему компьютеру.

На локальном сервере PHP в Ubuntu 20.04 не приводит к ошибке такая конструкция...

Попробуйте запустить файл напрямую — php index.php Такая конструкция приводит к:

helloPHP Warning:  Cannot modify header information - headers already sent by (output started at /home/runner/phpcli/main.php:3) in /home/runner/phpcli/main.php on line 7

Что собственно и говорит о том, что невозможно изменить заголовки, так как они уже были отправлены.

Тут дело скорее всего в буферизации вывода. Чтобы долго не расписывать, что это такое предлагаю вам ознакомиться со статьёй. https://notlaura.com/output-buffering/ Они легко читается в автопереводе. А также там как раз есть ошибка которую я привёл выше и описана причина, почему она появляется.

И еще заметил одну странность... http://localhost:8080/?firstName=Makarov&lastName=Vacheslav выводит только первую пару ключ=значение

Вот тут тоже странно. Приведите полную команду которой вы "дёргаете" localhost, а также полное содержимое файла index.php. По другому будет сложно разобраться. Я сейчас специально всё проверил локально у себя, работает отлично и выводит нужный массив.

В index.php расставляю PHP_EOL. Браузер не реагирует на эту конструкцию, все одной строкой выводит. Тут тегами html нужно пользоваться?

Да верно. Используйте HTML-теги переноса строки.

0

Вячеслав Макаров

Роман Ашиков, curl -v localhost:8080/?firstName=Makarov&lastName=Vacheslav Где-то прочитал, что в настройках php.ini можно поправить проблему вывода только первой пары ключ=значение... потерял тот топик с информацией... браузер нормально выводит.

0

Roman Ashikov

Да. Многое может зависеть от настроек самого сервера. Поэтому в начале я и сказал, что с локальными проблемами бывает довольно сложно. Могу порекомендовать вам написать ребятам в наш слак. Там всегда есть народ, в том числе опытные разработчики и кто-то точно сталкивался с такой же проблемой и обязательно вам поможет. О том как подключиться можно почитать тут — https://help.hexlet.io/ru/articles/111445-soobshchestvo-kheksleta-v-slake

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
25 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
25 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
25 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
25 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
25 мая 5 месяцев