Мне нужно отладить PHP.Какой мой лучший выбор? - PullRequest
14 голосов
/ 09 января 2011

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

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

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

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

Ответы [ 5 ]

6 голосов
/ 09 января 2011

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

2 голосов
/ 08 августа 2013

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

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


Для более продвинутого решения вы можете установить расширение 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.
0 голосов
/ 03 сентября 2014

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

Подробное пошаговое руководство по настройке вы найдете в следующем посте Как отлаживать PHP - Простой способ

0 голосов
/ 25 ноября 2013

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

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

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

0 голосов
/ 19 сентября 2013

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...