Форум

/ домой \ \ темы /



Тема: Обработка Content-Encoding

04/12/2007 14:32 iZzz32:
Small HTTP Server v3.05.74/zlib v1.2.3/PHP v5.1.2.2 (php-cgi.exe)

Некоторые форумы, например, phpBB2, умеют самостоятельно сжимать свои страницы. Они выставляют Content-Encoding: gzip (если браузер указывает Accept-Encoding, конечно) и выдают сжатое тело страницы. Но если установлена галочка «Использовать gzip сжатие» в Small HTTP Server, он, не проверяя наличие Content-Encoding, повторно сжимает уже сжатое тело страницы, и клиенту, конечно же, приходят «крякозябры».

Мне кажется, проверка на Content-Encoding перед сжатием результатов работы скрипта лишней не будет.

Кстати, под связкой SHHTP + php5isapi.dll phpBB2 работает лишь частично (вроде что-то при обработке POST глючит), стоит ковыряться или причина проблемы известна?

05/12/2007 20:53 ValdikSS:
> стоит ковыряться или причина проблемы известна
я говорил об этом в теме "Запрос на неявный адрес"
06/12/2007 21:58 iZzz32:
ValdikSS, к сожалению, в вашем посте не показываются URL-ы. Но для 127.0.0.1/foo/ сервер исправно отдаёт index.php как с php-cgi, так и с php5isapi.

Я говорил о другом (и, кстати говоря, был неправ насчёт POST): при успешном входе на форум, phpBB2 делает редирект через header(`Location: ` . $куда_то), но Small HTTP Server совместно с php5isapi выдают клиенту лишь статус 302 БЕЗ заголовка Location. Соответственно, проблема с php5isapi в моём случае: при работе с PHP через ISAPI-интерфейс сервер, встречая заголовок Location, выдаёт 302, как полагается, но проглатывает сам Location. Пример:
<?php header(`Location: /`); /* Будет работать через php-cgi, но не будет через php5isapi. */ ?>

Ещё при работе через php5isapi, скрипту почему-то недоступны заголовки, посланные клиентом. Пример:
<?php echo $_SERVER[`USER_AGENT`]; /* Покажет User-Agent только при работе через php-cgi. */ ?>

Немного оффтопик (не хочу заводить новую тему): если имя файла по умолчанию — «index.*», запрашиваемый URL — «127.0.0.1/html4/», а в каталоге «html4» лежит каталог «index», то «html4/index.html» игнорируется, зато возвращается дефолтовый файл (или листинг) каталога «html4/index/». Это немного необычно, да и поле в настройках называется «Имя ФАЙЛА по умолчанию».

И ещё: в настройках при вводе числа, при нажатии цифр 2, 3, 8 и 9 на NumPad-е (NumLock включён) цифры вводятся, но скроллится окно настроек, т.е., клавиши одновременно работают и как DownArrow, PageDown, UpArrow и PageUp соответственно.

12/12/2007 21:32 iZzz32:
Max, если вам неинтересны мелкие баги, скажите, и я не буду больше писать.
13/12/2007 01:23 Max:
Баги интересны. Я просто пока еще не успел все проверить и исправить, по этому не отвечал.
04/01/2008 08:50 ValdikSS:
Незнаю как у вас, но у меня если сделать POST например на 127.0.0.1 вместо 127.0.0.1/index.php то пост не обработается ни через cgi ни через isapi
04/01/2008 17:26 iZzz32:
ValdikSS, а какие версии Small Server и PHP, что поправлено в конфиге PHP, какой запрос видно в логе Small Server? Следующий скрипт index.php в корне нормально работает (версии софта см. в первом посте):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" media="all">
pre.formdata {border: solid thin #246; padding: 1em;}
</style>
</head>
<body><pre class="formdata">
<?php foreach ($_POST as $n => $v) echo "$n = $v\n"; ?>
</pre>
<form method="post" action="/">
<input type="text" name="foo" value="bar"><br>
<input type="text" name="baz" value="qux">
<input type="submit" value="Test">
</form>
</body>
</html>

Пользователь: Пароль: Новый пользователь:   Запомнить пароль: