Вопрос №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 нужно пользоваться?
С локальными проблемами бывает очень сложно. Так как у меня нет доступа к вашему компьютеру.
На локальном сервере 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-теги переноса строки.
Роман Ашиков,
curl -v localhost:8080/?firstName=Makarov&lastName=Vacheslav
Где-то прочитал, что в настройках php.ini можно поправить проблему вывода только первой пары ключ=значение... потерял тот топик с информацией... браузер нормально выводит.
Да. Многое может зависеть от настроек самого сервера. Поэтому в начале я и сказал, что с локальными проблемами бывает довольно сложно. Могу порекомендовать вам написать ребятам в наш слак. Там всегда есть народ, в том числе опытные разработчики и кто-то точно сталкивался с такой же проблемой и обязательно вам поможет. О том как подключиться можно почитать тут — https://help.hexlet.io/ru/articles/111445-soobshchestvo-kheksleta-v-slake
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







