Мне нужно отлаживать PHP. Какой у меня лучший выбор?

Я работаю над веб-сайтом в среде Linux (Debian). Я не специалист в Linux, но я могу справиться с этим, и сайт создан с использованием PHP, MySQL, HTML и т. Д.

Дело в том, что я использую PHP для серверной части. Прямо сейчас, для тестирования, я установил Apache на свой компьютер, чтобы я мог проверить все. Но было бы здорово, если бы я мог отлаживать PHP-код. Пока мне это не нужно, но теперь код становится все больше, это обязательно.

До сих пор я использую vim, и все в порядке, но как я могу отлаживать PHP в моем случае? Какие инструменты следует установить? Они свободны?

В принципе, мне нужно знать, какой будет лучший выбор в моей ситуации.

XDebug обеспечивает пошаговую отладку и может использоваться с eclipse PDT, netbeans и даже vim. Вы действительно должны попробовать. Также есть Zend Debugger.

Вы можете установить PHP IDE с помощью средств отладки. Это поможет вам отлаживать ваш PHP-код шаг за шагом.

Немногие популярны, у которых есть эта функция:

  • Eclipse (см .: Debug PHP с Eclipse? )
  • NetBeans
  • PhpED от NuSphere (только для Windows)

Для более продвинутого решения вы можете установить расширение XDebug вручную для PHP.

По умолчанию при загрузке XDebug он должен автоматически отображать обратную трассировку в случае любой фатальной ошибки. Или вы трассируете в файл (xdebug.auto_trace), чтобы иметь очень большую обратную трассировку всего запроса или выполнить профилирование (xdebug.profiler_enable) или другие настройки . Если файл трассировки слишком велик, вы можете использовать xdebug_start_trace () и xdebug_stop_trace () для сброса частичной трассировки.

Монтаж

Использование PECL:

pecl install xdebug 

В Linux:

 sudo apt-get install php5-xdebug 

На Mac (с Homebrew):

 brew tap josegonzalez/php brew search xdebug php53-xdebug 

Пример конфигурации шахты:

 [xdebug] ; Extensions extension=xdebug.so ; zend_extension="/YOUR_PATH/php/extensions/no-debug-non-zts-20090626/xdebug.so" ; zend_extension="/Applications/MAMP/bin/php/php5.3.20/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so" ; MAMP ; Data xdebug.show_exception_trace=1 ; bool: Show a stack trace whenever an exception is raised. xdebug.collect_vars = 1 ; bool: Gather information about which variables are used in a certain scope. xdebug.show_local_vars=1 ; int: Generate stack dumps in error situations. xdebug.collect_assignments=1 ; bool: Controls whether Xdebug should add variable assignments to function traces. xdebug.collect_params=4 ; int1-4: Collect the parameters passed to functions when a function call is recorded. xdebug.collect_return=1 ; bool: Write the return value of function calls to the trace files. xdebug.var_display_max_children=256 ; int: Amount of array children and object's properties are shown. xdebug.var_display_max_data=1024 ; int: Max string length that is shown when variables are displayed. xdebug.var_display_max_depth=3 ; int: How many nested levels of array/object elements are displayed. xdebug.show_mem_delta=0 ; int: Show the difference in memory usage between function calls. ; Trace xdebug.auto_trace=0 ; bool: The tracing of function calls will be enabled just before the script is run. xdebug.trace_output_dir="/var/log/xdebug" ; string: Directory where the tracing files will be written to. xdebug.trace_output_name="%H%R-%s-%t" ; string: Name of the file that is used to dump traces into. ; Profiler xdebug.profiler_enable=0 ; bool: Profiler which creates files read by KCacheGrind. xdebug.profiler_output_dir="/var/log/xdebug" ; string: Directory where the profiler output will be written to. xdebug.profiler_output_name="%H%R-%s-%t" ; string: Name of the file that is used to dump traces into. xdebug.profiler_append=0 ; bool: Files will not be overwritten when a new request would map to the same file. ; CLI xdebug.cli_color=1 ; bool: Color var_dumps and stack traces output when in CLI mode. ; Remote debugging xdebug.remote_enable=off ; bool: Try to contact a debug client which is listening on the host and port. xdebug.remote_autostart=off ; bool: Start a remote debugging session even GET/POST/COOKIE variable is not present. xdebug.remote_handler=dbgp ; select: php3/gdb/dbgp: The DBGp protocol is the only supported protocol. xdebug.remote_host=localhost ; string: Host/ip where the debug client is running. xdebug.remote_port=9000 ; integer: The port to which Xdebug tries to connect on the remote host. xdebug.remote_mode=req ; select(req,jit): Selects when a debug connection is initiated. xdebug.idekey="xdebug-cli" ; string: IDE Key Xdebug which should pass on to the DBGp debugger handler. xdebug.remote_log="/var/log/xdebug.log" ; string: Filename to a file to which all remote debugger communications are logged. 

Если вы используете apache как ваш веб-сервер, вы можете использовать журналы apache для просмотра любых ошибок, препятствующих успешному выполнению скрипта PHP.

Вы можете использовать

 tail -f /var/log/apache2/error.log 

для просмотра журналов apache и выполнения этой задачи (по крайней мере для подмножества ошибок, связанных с PHP).

В частности, если вы (новичок, как я, который нашел этот поток SO после первого запуска с PHP и пытались выяснить, что генерирует сообщение об ошибке, в первую очередь, начните с error_log . Это функция, которая отправляет строку как «сообщение об ошибке в журнал ошибок веб-сервера или в файл».

В общем, чтобы изучить основы отчетности и конфигурации ошибок в PHP, начните с функций в документации по функциям обработки ошибок на PHP.net – комментарий на этой странице by petrov dot michael () gmail com – это полезное место для начала.

Чтобы действительно генерировать ошибку, ваш лучший вариант в качестве новичка (что означает наименьшее количество документации для чтения) – это начать с print_r . Установка второго аргумента print_r в TRUE вернет строку, которую вы затем можете передать в error_log . Вероятно, это маршрут, который даст вам самый быстрый способ для отладки, учитывая, что ваш PHP-код может сидеть внутри некоторой структуры, которая добавляется в различные уровни контроля вывода (например, WordPress).

Если ваша ОС ПК – это Windows, тогда самый простой способ – использовать бесплатную версию CodeLobster с любым стеком веб-разработки (WAMP, XAMPP). Я обнаружил, что настройка CodeLobster для отладки очень проста (по сравнению с eclipse или netbeans), а установка CodeLobster очень мала по сравнению с к другим IDE также, кроме того, его бесплатная версия поддерживает полную функциональность отладки.

Вы можете найти подробное пошаговое руководство, чтобы настроить его в следующем сообщении. Как отлаживать PHP – простой способ