Ответ 1
XDebug предоставляет пошаговую отладку и может использоваться с eclipse PDT, netbeans и даже vim. Вы действительно должны попробовать. Также есть Zend Debugger.
Я работаю над веб-сайтом в среде Linux (Debian). Я не эксперт в Linux, но я могу справиться с этим, и сайт создан с использованием PHP, MySQL, HTML и т.д.
Дело в том, что я использую PHP для серверной части. Прямо сейчас, для тестирования, я установил Apache на свой компьютер, чтобы я мог проверить все. Но было бы здорово, если бы я мог отлаживать PHP-код. До сих пор мне это не нужно, но теперь код становится все больше, это обязательно.
До сих пор я использую vim, и все в порядке, но как я могу отлаживать PHP в моем случае? Какие инструменты следует установить? Они свободны?
В принципе, мне нужно знать, что было бы лучшим выбором в моей ситуации.
XDebug предоставляет пошаговую отладку и может использоваться с eclipse PDT, netbeans и даже vim. Вы действительно должны попробовать. Также есть Zend Debugger.
Вы можете установить 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 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 script.
Вы можете использовать
tail -f /var/log/apache2/error.log
для просмотра журналов apache и выполнения задания (по крайней мере для подмножества ошибок, связанных с PHP).
В частности, если вы (новичок вроде меня, который нашел этот поток SO после первого запуска с PHP и пытались выяснить, что генерирует сообщение об ошибке в первую очередь, начинайте с error_log. Эта функция отправляет строку как "сообщение об ошибке в журнал ошибок веб-сервера или в файл".
В общем, чтобы изучить основы отчетности и конфигурации ошибок в PHP, начните с функций в Документация по функциям обработки ошибок на PHP.net - комментарий на этой странице petrov dot michael () gmail com
- это полезное место для начала.
Чтобы на самом деле генерировать ошибку, ваш лучший вариант в качестве новичка (что означает наименьшее количество документации для чтения) - это начать с print_r. Установка второго аргумента print_r
в TRUE
приведет к возврату строки, которую вы можете передать в error_log
. Вероятно, это маршрут, который даст вам самый быстрый способ для отладки, учитывая, что ваш PHP-код может сидеть внутри какой-либо структуры, которая добавляет в различные уровни контроля вывода (например, Wordpress.)
Если ОС вашего ПК - это Windows, тогда самый простой способ - использовать бесплатную версию CodeLobster с любым стеком веб-разработки (WAMP, XAMPP). Я обнаружил, что настройка CodeLobster для отладки очень проста (по сравнению с eclipse или netbeans), а установка CodeLobster - очень мал по сравнению с другими IDE, а также его бесплатная версия поддерживает полную функциональность отладки.
Вы можете найти подробное пошаговое руководство, чтобы настроить его в следующем сообщении Как отлаживать PHP - простой способ