Ефективний пошук та виправлення багів у PHP

Налагоджувальні засоби

Системные функции

//

  • phpinfo(int $flags = INFO_ALL): bool отправляет в выводной поток информацию о всех параметрах PHP или параметрах выбранного флага, которые содержат информацию о настройках компиляции PHP, о модулях, версии, сервере и среде выполнения, окружении, версии ОС, путях, основных и локальных значениях настроек конфигурации, HTTP-заголовках и лицензии PHP
  • ini_set(string $option, string|int|float|bool|null $value): string|false устанавливает значение заданного параметра конфигурации, которое будет действовать до завершения скрипта, а после завершения вернется к исходному
    • ini_set('log_errors', true) включает логирование ошибкок
    • ini_set('error_log', '/home/reks/domains/reks.biz/logs/php-error-log' ) назначает файл для логирование ошибок
    • ini_set('display_errors', 1) - устанавливает вывод ошибок на экран вместе с остальным выводом, применяется только для разработки и отладки
    • и другие... //www.php.net
  • php_sapi_name(): string|false возвращает тип интерфейса (Server API, SAPI), который использует PHP
    • 'cli' указывает на вызов в командной строке консоли
    • неполный список других значений: apache, apache2handler, cgi, cgi-fcgi, cli-server, embed, fpm-fcgi, litespeed, phpdbg
  • error_log( string $message, int $message_type = 0, ?string $destination = null, ?string $additional_headers = null ): bool Отправляет сообщение об ошибке в лог веб-сервера или в пользовательский файл
Ошибка 500 (Internal Server Error)

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

В такой ситуации следует создать другой отладочный скрипт и вызвать скрипт с ошибкой из него:

Функции !!!

//

  • set_time_limit(int $seconds): bool задает время в секундах, в течение которого скрипт должен завершить работу, если скрипт не успевает, вызывается фатальная ошибка; по умолчанию даётся 30 секунд, либо время, записанное в настройке max_execution_time в php.ini (если такая настройка установлена).

debug_backtrace(int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT, int $limit = 0): array выводит стек вызовов функций PHP в массив

  • DEBUG_BACKTRACE_PROVIDE_OBJECT Нужно ли заполнять данные для ключа object
  • DEBUG_BACKTRACE_IGNORE_ARGS Нужно ли исключить аргументы всех функций/методов в ключе "args" для уменьшения расхода памяти

 

Leave a Reply