Функция заголовка php выдает ошибку, когда не должна - PullRequest
1 голос
/ 08 апреля 2009

Я работаю с PHP 4.3.11, и когда я выполняю заголовок всегда отвечает с ошибкой, подобной этой

Предупреждение: Невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с d: \ folder \ file.php: 1) в d: \ folder \ file.php на линии 2

Предупреждение: Невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начат в d: \ folder \ file.php: 1) в d: \ folder \ file.php на линии 3 Текущая версия PHP: 4.3.11

код, который я использовал для генерации этой ошибки, был

<?php
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");   // Date in the past

    echo 'Current PHP version: ' . phpversion();

    // prints e.g. '2.0' or nothing if the extension isn't enabled
    echo phpversion('tidy');
?>

В нем нет пробелов и символов новой строки до или после тегов php, и тот же код в версии 5.x возвращает только версию php, как и ожидалось.

Любая подсказка?

Заранее спасибо

Edit: Решено !: Я открыл файл с западноевропейской кодировкой и удалил BOM , и это сработало. Спасибо всем за помощь!

Ответы [ 5 ]

5 голосов
/ 08 апреля 2009

Есть ли у вас UTF BOM в начале файла?

5 голосов
/ 08 апреля 2009

Убедитесь, что перед блоком PHP нет пустых строк и невидимых символов (например, UTF BOM ), чтобы <?php действительно было первым в файле.

2 голосов
/ 08 апреля 2009

, если ваш файл не содержит ничего, кроме php-кода, рекомендуется пропустить закрывающий тег php, чтобы избежать проблемы с пробелами в конце файла

0 голосов
/ 08 апреля 2009

маловероятно, но есть возможность определить auto_prepend_file в php.ini (возможно, тоже .htaccess).

http://at2.php.net/manual/en/ini.core.php - это действует как require() в начале каждого сценария. Вы можете проверить это, посмотрев на вывод phpinfo();.

но я тоже думаю, что проблема в спецификации utf-8.

0 голосов
/ 08 апреля 2009

Ошибка, которую вы получаете, означает, что весь ваш скрипт (включая другие файлы) отправляет некоторый вывод до вызова функции header ().

Вам следует проверить все ваши файлы и посмотреть, выводит ли какой-либо из них что-либо (с помощью echo () или print ()), или пропустили ли вы несколько пустых пробелов после последнего закрывающего тега ?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...