| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Не выводится текст ошибки в браузер |
| Автор: V0fka 2.3.2016, 12:51 | ||
| Привет! Есть заведомо синтаксически не верный скрипт: в конце одной строки пропущена точка с запятой. При попытке обратиться к скрипту, получаю ошибку 500. Манипуляции с
ничего не меняют и в браузере по прежнему ошибка. При этом в каталоге со скриптом создается error_log файл, куда пишется текст ошибки. В phpinfo() display_errors = Off. Вопрос 1: можно ли как-то в конкретном скрипте задать, чтобы ошибки выводились, без изменения php.ini? Вопрос 2: вывод ошибки в error_log это тоже устанавливается где-то в php.ini? Если так, то где? |
| Автор: ksnk 2.3.2016, 14:55 |
| Синтаксическая ошибка не является ошибкой времени выполнения и, соответственно, не перехватывается никакими обработчиками. Если убедиться в корректности скрипта нужно именно "в броузере" - можно скриптом запускать в консоли `php -t script.php` и смотреть есть ли ошибки. Такое поведение - старая фича php, хотя в https://habrahabr.ru/post/261451/ и такие ошибки. |
| Автор: V0fka 2.3.2016, 16:03 |
| Я просто помню, что когда-то такое вроде в браузере писало. Но может попутал с чем-то. Спасибо за ответ! |
| Автор: ksnk 2.3.2016, 16:27 |
| Да, я тоже помню, что в сборке Денвера что-то такое было, ошибки синтаксиса выводились на экран. Но там довольно серьезная правка в php.ini, собственные прелод файлы и так далее... К сожалению, Денвера под рукой уже не осталось, проверить не на чем :( |
| Автор: _zorn_ 2.3.2016, 19:03 |
| Просто нужно понимать то с чем работаешь. display_errors = On error_reporting = E_ALL php.ini ничего сложного.. |
| Автор: ksnk 2.3.2016, 21:13 |
| Возможно, дело в nginx. В моем теперешнем отладочном Winginx, как и в аналогичной серверной безапачной конструкции, перехватить ошибку синтаксиса в окне броузера нельзя. Возвращается 500 ошибка. В то время как в апаче, если php используется как модуль - можно. |
| Автор: V0fka 9.3.2016, 13:40 |
| Из того, что выше написано, я правильно понял, что для того, чтобы эти ошибки отображались в браузере надо вносить правки в php.ini display_errors = On error_reporting = E_ALL ? Если так, то что делать, если я не хочу выводить ошибки везде, а хочу это сделать в конкретном скрипте на период отладки? |
| Автор: Angel_666 9.3.2016, 15:45 |
| создай в папке с этим скриптом .htaccess с строкой php_flag display_errors 1 Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Ne-vyvoditsya-tekst-oshibki-v-brauzer-id56d6b83cae2015b1048b4567#findElement_E7045_56e01adaae201575296ec802_0 |
| Автор: V0fka 11.3.2016, 18:30 |
| Попробовал, но лыжи всеравно не едут. Показывает теперь ошибку в браузере независимо от того есть ошибка в пхп скрипте или нету: Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. |
| Автор: _zorn_ 12.3.2016, 05:58 |
| Это означает что хтаццес корявый. И возвращает ее апач, а не пхп. Боже, когда же все начнут разбираться с тем с чем работают... Ладно, пойдём другим путём. Зачем вам апач на винде ? Для тестов - правильно ? Почему не использовать встроенный в пхп сервер ? (в консоле php -S localhost:1234) Если вам нужны специфичные .htaccess (которые обрабатывает только апач), значит у вас неправильна построена архитектура. Мне выше крыше хватает распакованной зипины пхп на винде без всяких апачей (http://windows.php.net/download#php-5.6) чтобы творить |
| Автор: V0fka 15.3.2016, 12:54 |
На всякий случай уточню: в хтацесе должна быть только одна эта строчка? В моем случае это тогда nginx Когда поработают какое-то время, может быть тогда. В моем случае это nginx на linux хостинге. Если и тут возникает вопрос зачем так, то так сложилось. |