За последние 24 часа нас посетили 54590 программистов и 1781 робот. Сейчас ищут 1448 программистов ...

Как поймать ошибку, когда она не выводится?

Тема в разделе "PHP для новичков", создана пользователем 584, 23 авг 2016.

  1. 584

    584 Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    17
    Симпатии:
    0
    У меня скрипт, который периодически в разные моменты своего исполнения умирает, но не выводит на экран никаких ошибок при этом, то есть это не ошибка в коде (если произошла ошибка PHP, то сообщение об этом появляется на экране). Умирает - это значит страница перестает дальше выводить что-то, просто обрубает и всё.

    На сервере в папке /logs/ в файле "errors" в моменты таких прерываний ничего не записвается. Основные ошибки там это про типа "File does not exist: " или "user admin: authentication failure for ..", причем в другие моменты времени, не в те, когда я запускаю скрипт.

    В настройках PHP задано довольно большое время выполнение скрипта, то есть не из-за этого.

    Вопрос: что это может быть и как это отловить? Накидайте идей, пожалуйста, а то без понятия куда искать.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Лучше через cli например cron'ом запускать скрипты которые долго выполняются.

    Ошибка видимо плавающая, нужно логировать почти все действия скрипта, можно с помощью xdebug попробовать, он должен писать логи без отладки, ещё надо смотреть если ты через веб-сервер запускал, может у него ограничения, протестируй на cli.
     
  3. 584

    584 Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    17
    Симпатии:
    0
    Через cli я не умею. Как это?

    У меня скрипт выполняется на хостинге, нет локального сервера. Я так понимаю, что xdebug там не установлен и я сам его со своим уровнем знаний не установлю.

    Можно ли как-то попредполагать из-за чего вообще вылетать без оповещений может скрипт? В теории, например:

    - нехватка оперативной памяти
    - процесс длится слишком долго
    - где-то стоит @, которая не даёт ошибке вывестись на экран

    еще что?
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Еще могут быть такие ошибки, которые вообще по непонятным причинам уловить нельзя. В логах тишина, на экран ничего не выводиться. Просто пхп-машина не запускается или молча падает при выполнении.

    Словил такую пару недель назад. Всё работало, но после рестарта пхп-машины - перестало. Никаких настроек не менялось. Включаю отладку - тишина. Расставляю поинты - тишина. Выключаю по очереди расширения. Нашел. GeoIP. Пытаюсь понять суть проблемы. Оказалось maxmind выпустили базу в новом формате, и их же родной автоапдейтер эту базу успешно обновил. Но пхп-машина работала со старой базой, закэшированной в ОЗУ. После рестарта - не смогла обработать базу в новом формате. Расширение просто отваливалось при попытке выполнения GeoIP-функций. Молча. Скачал базы в легаси-формате и ОК. Но несколько часов на поиск причин белого экрана - ушло.
     
    584 нравится это.
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  6. 584

    584 Активный пользователь

    С нами с:
    13 авг 2016
    Сообщения:
    17
    Симпатии:
    0
    Вот есть у меня компьютер, есть браузер. Чтобы запустить скрипт на сервере через барузер, я закачиваю его туда по FTP, потом открываю в браузере и он запускается.

    А чтобы зайти с командной строки и запустить, мне что делать?
    --- Добавлено ---
    Блин, мне кажется проще нанять кого-то, чем самому разобраться ))
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    В данном случае скорее всего да. Обычно у людей есть локальный сервер, и есть внешний сервер. Внешний - копия локального в плане настроек, окружения и ОСи. Все проблемы фиксятся на локальном сервере, а на внешний выкатываются патчи.

    Тогда нет вообще никаких проблем. Локальный сервер делается просто - виртуалочка+дистриб нужной операционки.
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Если это хостинг или VDS/Server, то там обычно дают SSH, так ты сможешь подключиться к терминалу по SSH.
    Начни читать книгу для начинающих по администрированию linux, там всё должно быть.