Итак, я поиграл с идеей цикла переполнения стека. Я ввел следующий код и получил симпатичное маленькое изображение в Google Chrome (их ответ на внутреннюю ошибку 500, которая, кстати, НЕ полезна для Google!). Это было ожидаемо и намеренно.
Набор кодов №2
<?php
for($x=-1;$x<=3;$x++){
echo $x/0.">";
}
?>
Проверив заголовки, я нашел:
http://server.domain/overflow.php
GET /overflow.php HTTP/1.1
Host: server.domain
User-Agent: Browser
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cache-Control: max-age=0
HTTP/1.0 500 Internal Server Error
Date: Thu, 22 Aug 2013 21:51:30 GMT
Server: Apache
X-Powered-By: PHP/5.3.3
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8
Я пришел к приведенному выше коду, потому что мне было интересно узнать о делении на ноль и о том, как это обрабатывает PHP. Я написал код ниже, чтобы попытаться вызвать результат, но не получил того, что ожидал. Проблема в том, что вместо того, чтобы получить 500 internal server error
из следующего кода, я получаю что-то еще... NULL
, где я ожидаю, что сервер выдаст ошибку.
Набор кодов №1
<?php
for($x=-1;$x<=3;$x++){
echo $x/$x.">";
}
?>
Вывод
1>>1>1>1>
Вопрос
Почему первый бит кода не вызывает внутреннюю ошибку сервера 500, так как я делю на ноль? 1/1=1
,1/0=500 Error
,0/0=Null
ini_set('display_errors',1); error_reporting(E_ALL);
творит чудеса - person Amal Murali   schedule 23.08.2013display_errors
была включена. - person AbsoluteƵERØ   schedule 23.08.2013display_errors
включен. - person AbsoluteƵERØ   schedule 23.08.2013