У меня есть некоторые проблемы с файлом PHP, который не работает правильно. Тип контента не становится полученным никаким браузером вообще. Firebug интерпретирует файл как текст/HTML вместо CSS. Вот файл:
<?php
header('Content-Type: text/css; charset=UTF-8');
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 'On');
/* CSS goes on from here */
Я протестировал для помещения строки с echo 'TEST';
перед строкой заголовка, и ожидал видеть классические "заголовки, уже отправленные" ошибка, но ничто не появляется!
Нормальные .css-файлы работают как очарование как бы то ни было.
Что я могу сделать для улаживания этого?
ОБНОВЛЕНИЕ: Действительно изменялся default_mimetype = "text/html"
кому: default_mimetype = "text/css"
в php.ini и всех страницах был сразу интерпретирован как CSS, таким образом, существует, должен быть способ просто отправить заголовки CSS за этим файлом :)
Полный файл от требования John:
<?php
header('Content-Type: text/css; charset=UTF-8');
echo 'body {background-color: #000000; }';
?>
ОБНОВЛЕНИЕ № 2: добавление ini_set('default_mimetype', 'text/css');
в файл PHP фиксирует этот файл, но он не решает проблему, которая вызывает этот отказ...
ОБНОВЛЕНИЕ № 3: Протестированное добавление AddType text/css .css
и к .htaccess и к конфигурации Apache. Все еще никакая удача. Также протестированный для отправки заголовков, разделенных от набора символов: header('Content-Type: text/css');
- Все еще никакая удача...
ОБНОВЛЕНИЕ № 4: переустановили Apache+PHP в сервере, чтобы видеть, уходит ли проблема, но нет. То же старое, то же старое...
Проверьте свой файл php.ini на предмет настройки output_buffering. Если он не выключен, PHP автоматически выполняет буферизацию вывода за вас. Выключите это и повторите что-нибудь перед командой заголовка, и вы должны увидеть «классическую ошибку».
Вы не должны использовать закрытие?>. Я знаю, что это спорное предложение, но слишком часто люди добавляют после него возврат и / или пробел, который выводится в браузер (перед заголовком). Очень мало случаев, когда неиспользование может вызвать проблемы.
Вы можете попробовать Content-Style-Type: text / css
См. Ниже из здесь
Язык таблиц стилей по умолчанию также может быть установлен с заголовками HTTP . Приведенное выше объявление META эквивалентно заголовку HTTP :
Content-Style-Type: text / css
Редактировать:
По ссылке упоминается о добавлении AddType text / css .css
в файл конфигурации apache.
Возможно, вы можете попробовать
Edit2 Найдите 'css' по этой ссылке . У кого-то была такая же проблема, как у вас. Попробуйте отправить заголовок без кодировки
. Недавно у меня была опасная проблема с Firefox и XHTML 1.0 переходным.
Он отлично работал с другими браузерами, , а также с HTML 4.1.
Короче говоря, сгенерированные PHP файлы JS и CSS по-прежнему указывались в заголовках как text / html, тогда как в HTML они были text / css и application / javascript; Firefox, которому было сказано, что страница содержит XHTML 1.0, стал запоминающимся и отказался стилизовать страницу. (Я думаю, что JS все еще работает, но я все равно исправил его .)
Решение:
header ('Content-type: text / css'); и заголовок ('Content-type: application / javascript');
Edit 3 Было сообщение о некоторых формах не отправлять данные из-за утилиты AVG Linkscanner. Поскольку вы переустановили Apache + php, и я предполагаю, что вы не переустанавливали ОС, вы, возможно, можете исследовать это / попробовать, отключив некоторые утилиты / плагины.
Выглядит нормально, и строка с echo
обязательно должна генерировать предупреждение. Может быть, вы редактируете не тот файл?
Похоже, ваш веб-сервер интерпретирует сценарий как обычный файл. Имеет ли он расширение .php и работают ли другие файлы .php должным образом?
Обычно это вызвано фатальной ошибкой (т.е. синтаксической ошибкой), которая приводит к прерыванию скрипта до выполнения кода (до того, как display_errors может быть установлен через ini_set() во время выполнения). Попробуйте изменить display_errors в конфигурационном файле php (php.ini).
причина в том, что заголовок
функция работает, только если она вызывается первой!
Если вы поместите перед ним echo
, тип содержимого автоматически станет text / html
, попробуйте напечатать код CSS после заголовка, чтобы проверить, действительно ли он работает.
Прочтите эту страницу для получения дополнительной информации
РЕДАКТИРОВАТЬ: вы меняли свое сообщение? : -)
Безумная догадка: откройте файл с помощью чего-нибудь, что отобразит любую спецификацию . Если перед Php
вы видите какие-то странные символы, у вас проблема. Проверьте текущие параметры редактора, чтобы сохранить файл UTF-8 и сохранить их без спецификации.
Возможно, стоит проверить с curl , чтобы увидеть, какие заголовки на самом деле отправляются.
Попробуйте это из командной строки и проверьте наличие «text / css»:
curl -I http://example.com
В зависимости от заголовков запросов браузера, PHP также может отправлять выходные данные в сжатом виде с использованием буферизации вывода. В файле PHP попробуйте это, чтобы проверить ob_gzhandler
.
print_r(ob_list_handlers());
Если он включен, проверьте zlib.output_compression
в конфигурации php.ini или Apache.
Я обнаружил, что весь файл имеет отступ.
<?php
header('Content-Type: text/css; charset=UTF-8');
echo 'body {background-color: #000000; }';
?>
Поскольку отступ в строке 1 выводит 4 пробела, заголовок работать не будет.
Возможно, есть проблемы с кешированием.
Попробуйте следующее:
header('Content-type: text/css');
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
echo 'body {background-color: #000000; }';
У меня работает с нестандартной установкой XAMPP и firefox - firebug сообщает о правильном типе содержимого.
Возможно, функция header ()
отключена в ваша конфигурация?
Тест:
print ini_get('disable_functions');