Странности с PHP (part 2)

Line

Google, Co.
Romashov
Выслал!
Вот он не выводит 1 на эран, выводит 1 только в консольном режиме
 

Romashov

экспериментатор
<? echo "a"; ?>
<? echo "ab"; ?>
<? echo "abc"; ?>
Работают все три, или только 2 и 3?
Разговор ведём про отправку браузеру.

-~{}~ 01.12.05 00:44:

А если у тебя в файлике просто 1 символ (без PHP) - и ты запрашиваешь его у сервера - выдаёт нормально?
 

zarus

Хитрожопый макак
Автор оригинала: Line
Так он был, сейчас продублирую

$result = mysql_query("SELECT * FROM Navigation WHERE id=1");
if (mysql_error()) echo mysql_error();
else
{
while ($row = mysql_fetch_assoc($result))
{
echo $row['id'];
}

}
Криво составленный код - вечная проблема, почему ничего не пашет
PHP:
$result = mysql_query("SELECT * FROM `Navigation` WHERE `id`=1") or die(mysql_error());
while (false !== ($row = mysql_fetch_assoc($result))) {
  echo $row['id'];
}
Все пашет
 

Line

Google, Co.
Romashov
Дело в отправке браузеру!
Сегодня попробовал сделать отступ, чтобы длина документа была больше одного байта - все заработало!
Браузер не получает данные менее 2-х байт!
 

Romashov

экспериментатор
А попробуй так.
Положи скрипт
echo.php
PHP:
<? echo "1"; ?>
Запусти:
test.php
PHP:
<? echo "просто строка, чтобы вывод был больше 1 байта\n".file_get_contents("http://localhost/echo.php");?>
Посмотри - что будет? Отдаст 1 байт echo.php или нет.

-~{}~ 01.12.05 18:46:

т.е. припишется внизу единичка, или нет?
 

Line

Google, Co.
Отдаст точно!!!
Проверил по другому, просто в консольном режиме запустил скрипт php - и 1 вылезла на экран.
Только вот вопрос, зачем это нужно?
:)
 

SiMM

Новичок
> Отдаст точно!!!
Не надо пороть отсебятину. Надо чётко выполнить указания и доложить результат.

> Только вот вопрос, зачем это нужно?
Для сужения области поиска проблемы.
 

Romashov

экспериментатор
Через консоль - ты идёшь в обход сервера.
Как я сказал - тут сервер пересылает результат.
Вот и проверим - в браузере (или получателе) дело, или при отправке. 2 минуты делать, не ленись.
 

Line

Google, Co.
SiMM
На экран выведется все!, длиной более 1 Байта!

test.php
<? echo "просто строка, чтобы вывод был больше 1 байта\n".file_get_contents("http://localhost/1.php");?>
Уже значительно больше байта! Так, что проблем не возникло.


Дело точно не в бружере, т.к. обычный статический html-файл даже рабмером 1 Байт выводится!
 

phprus

Moderator
Команда форума
Line
Ты выполнял инструкции Romashov?
Это нужно чтобы проверить отдает ли сервер этот файл. А именно проверка заключается в строке file_get_contents("http://localhost/1.php"). Что она делает смотри в документации.
То что в броузере проблем нет мы поняли. Этим скриптом мы проверяем сервер. (1.php: <? echo "1"; ?>).

P.S. Что бы понять прошла ли проверка прочитай конец сообщения Romashov.
 

Romashov

экспериментатор
там ошибка была в моём коде - получал содержимое файла 1.php вместо echo.php - сорри, поправил.
Но это лишнее доказательство, что Line не выполнил тест.
 

SiMM

Новичок
> На экран выведется все!, длиной более 1 Байта!
Не умничай. Если тебе сказали - выполняй - иди и выполняй. Не можешь справиться сам - дай помочь тебе другим - иначе уговаривать тебя никто не будет - это, в общем-то, исключительно твоя проблема (по крайней мере - ни у кого пока ещё не воспроизвелось).
 

Line

Google, Co.
SiMM
Специально для тебя могу сказать что сделать, чтобы эта проблема появилась.
Попробуй на Apache 1.3 + PHP 5 на ОС FreeBSD.
и вывести к примеру какой нить символ на экран с помощью php (без отсупов и переносов)

Romashov
Warning: file_get_contents(tcp://192.168.10.1/run.php) [function.file-get-contents]: failed to open stream: No such file or directory in /var/www/index.php on line 1
просто строка, чтобы вывод был больше 1 байта
 

Romashov

экспериментатор

Steamroller

Новичок
Попробуй на Apache 1.3 + PHP 5 на ОС FreeBSD.
и вывести к примеру какой нить символ на экран с помощью php (без отсупов и переносов)
Я вчера кстати попробовал, именно Апач 1.3, PHP 5, FreeBSD 5 - один символ, из ассоциативного массива... вывелся нормально.
 

Romashov

экспериментатор
он доступен через tcp://192.168.10.1/run.php ?
попробуй сделать временно(!) в нём вывод >1 байта и загрузить через браузер. потом попробуй 1 байт.
 

Steamroller

Новичок
А разве можно как tcp:// запрашивать? Наверно правильнее как http://...
 

Romashov

экспериментатор
Я не работал под FreeBSD и, соответственно, не знаю особенностей.
Я попросил запросить так:
PHP:
file_get_contents("http://localhost/echo.php");
и был удивлён, увидев это в ответ:
Код:
Warning: file_get_contents(tcp://192.168.10.1/run.php)
 
Сверху