PHP генерирует исключение, печатает на стандартный вывод и, по всей вероятности, сообщает об ошибке должным образом. IIS, вероятно, игнорирует это и бросает 500.
Попробуйте записать свои ошибки в файл вместо их отображения, что может успокоить IIS. Я верю, что это:
display_errors = Off
log_errors = On
error_log = "C:/YourWWW/errors.txt"
... но у меня нет php.ini для проверки.
Возвращаясь к вопросу, если $y
пусто, что вы ожидаете от PHP? Любой здравомыслящий язык программирования будет вызывать рвоту, когда вы попытаетесь назначить несуществующую переменную. Это будет звучать грубо, но если это «нарушает основную часть написанного вами кода», вы делаете что-то не так. Кроме того, не уверен, что вы подразумеваете под «прервать использование» $_GET
и $_POST
. Если вы имеете в виду, это бросит 500:
$foo = $_GET["nonexistentvar"];
... тогда вы совершенно правы. Вы должны проверить наличие ключа, прежде чем ожидать, что PHP назначит то, что не существует. Пау, № 500:
$foo = isset($_GET["nonexistentvar"]) ? $_GET["nonexistentvar"] : NULL;
Извините, если я звучу враждебно, но вы столкнулись с очень плаксивым вопросом.