Как отлаживать код Php? - PullRequest
       13

Как отлаживать код Php?

11 голосов
/ 19 апреля 2011

Я новичок в PHP.Вот моя ситуация.Я пишу свой код в vim и помещаю его в / var / www /, тогда я могу использовать

localhost / * .php

для запускамой код в браузере.

Когда в моем коде ошибка.Просто ничего не вышло.

Как я могу отлаживать код mu, такой как c ++ или java?

Спасибо.

Отредактировано:

Ссылка, которую предоставляют некоторые друзьяэто не полезно для меня.Я под Linux.Это для победы.

Ответы [ 10 ]

7 голосов
/ 19 апреля 2011

Если вы используете localhost, я бы предложил использовать Firefox или Chrome и установить Firebug для Mozilla, и Chrome получает значение по умолчанию.Убедитесь, что на локальном хосте ваши настройки соответствуют серверу, на который вы загружаете, так как это может вызвать проблемы при запуске.

В частности, на большинстве общих хостингов PHP работает в безопасном режиме и буферизация вывода отключена, так что если выиспользуйте это, используйте это, вызывая это, вызывая ob_start ();и т.д., в противном случае у вас не должно возникнуть никаких проблем, а обучение отладке - это часть веселья, которая помогает вам многому научиться:)

Что касается ошибок php, просто отредактируйте файл php.ini заново, вы можете найти все, что вам нужно.информация о http://php.net

Happy Coding

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

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

включите обе эти строки в код, чтобы увидеть, что это за ошибка.

<?php 
       ini_set("display_errors",1);
       error_reporting(E_ALL);
        //code goes here
?>
2 голосов
/ 19 апреля 2011

Вы можете использовать error_reporting() вверху кода ...

error_reporting(E_ALL);

Вам также понадобится display_errors в php.ini.

Обратите внимание, что в рабочей среде вы должны получать публичные сообщения об ошибках.

1 голос
/ 21 мая 2018

В дополнение к комментариям об использовании error_reporting(E_ALL); в верхней части вашего кода, мне нравится использовать утилиту php cli. У меня нет веб-сервера на компьютере, который я использую для написания и отладки php и html, поэтому хорошей особенностью утилиты cli является встроенный веб-сервер. Чтобы установить php cli:

sudo apt install php7.0-cli

Чтобы использовать веб-сервер, перейдите в каталог, где находятся ваши html и php файлы, и запустите:

php -S localhost:8080

Затем укажите в браузере файлы, которые вы тестируете ... например:

http://localhost:8080/test.php 

Вы также можете использовать утилиту cli для запуска вашего php-кода, и он будет отображать ошибки по номеру строки (используйте редактор, который отображает номера строк). Возможно, вам придется закомментировать и настроить код, который зависит от того, как его вызывает html.

php test.php
0 голосов
/ 16 августа 2018

Используйте эти две строки для отладки (это позволит найти ошибки в номерах строк):

ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
0 голосов
/ 19 апреля 2011

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

0 голосов
/ 19 апреля 2011

PHP создает файл error_log в своем каталоге при возникновении проблемы, вы можете найти там отладочную информацию.

Также попробуйте использовать var_dump($someVarible). Это даст вам полезную информацию о текущем состоянии переменной - часто лучше, чем echo.

0 голосов
/ 19 апреля 2011

Вы можете проверить вывод файла журнала с помощью PHP.Хороший способ увидеть вашу конфигурацию - использовать phpinfo () .

. Также вы можете установить error_reporting () , чтобы вы могли видеть сообщение об ошибке вместо белогостр.

0 голосов
/ 19 апреля 2011

Хотя я лично считаю, что var_dump достаточно для отладки php, некоторые люди предпочитают использовать для этого отладчики, такие как xdebug.

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