Можно ли написать строку или войти в консоль?
Что я имею в виду
Как и в JSP, если мы напечатаем что-то вроде этого system.out.println("some")
, оно будет там, на консоли, а не на странице.
Fire Fox
В Firefox вы можете использовать расширение под названием FirePHP, которое позволяет регистрировать и выгружать информацию из ваших PHP-приложений на консоль. Это дополнение к удивительному расширению веб-разработки Firebug .
Хром
Однако, если вы используете Chrome, есть инструмент отладки PHP, называемый Chrome Logger или webug (у webug есть проблемы с порядком журналов).
В последнее время Clockwork находится в активной разработке, которая расширяет Инструменты разработчика, добавляя новую панель для предоставления полезной информации об отладке и профилировании. Он обеспечивает готовую поддержку Laravel 4 и Slim 2, а также может быть добавлена поддержка с помощью расширяемого API.
Использование Xdebug
Лучший способ отладить ваш PHP - использовать Xdebug . Большинство браузеров предоставляют вспомогательные расширения, которые помогут вам передать требуемую строку cookie / строки запроса для инициализации процесса отладки.
Или вы используете трюк из PHP Debug для консоли .
Для начала вам понадобится небольшая вспомогательная функция PHP
Тогда вы можете использовать это так:
Это создаст вывод как это:
источник
"Debug Objects: " . $data . ""
$data
в выводе появляется, то вы не ввели функцию точно так, как показано. Внимательно посмотрите на одинарные и двойные кавычки, чтобы убедиться, что они соответствуют приведенному выше коду.$data
переменная php; ко времени отправки страницы в браузер эта переменная php будет заменена на параметр, переданный вdebug_to_console
. Браузер никогда не должен видеть$data
. (Если вы посмотритеpage source
в браузере, это не должно сказать$data
.)Если вы ищете простой подход, используйте JSON:
источник
function debug_log( $object=null, $label=null ){ $message = json_encode($object, JSON_PRETTY_PRINT); $label = "Debug" . ($label ? " ($label): " : ': '); echo "<script>console.log(\"$label\", $message);</script>"; }
По умолчанию отправляются все выходные данные
stdout
, то есть HTTP-ответ или консоль, в зависимости от того, запускается ли ваш скрипт Apache или вручную в командной строке. Но вы можете использоватьerror_log
для регистрации, и различные потоки ввода / вывода могут быть записаны сfwrite
.источник
error_log
это то , что мне нужно было вывести на терминал через встроенный веб-сервер PHPПопробуйте следующее. Это работает:
источник
Создает
с
так что div не отображается, но
Функция создана в JavaScript. Таким образом, вы получите сообщение в консоли.
источник
div
. если у вас просто есть<script>
блок, в браузере ничего не будет отображаться.json.encode
кавычки не ломали вашу строку кода. Например:echo "<script>console.log(".json_encode($msg).")</script>";
Как автор связанной веб-страницы в популярном ответе , я хотел бы добавить свою последнюю версию этой простой вспомогательной функции. Это гораздо прочнее.
Я использую
json_encode()
для проверки, если тип переменной не является необходимым, а также добавить буфер для решения проблем с фреймворками. Там нет твердого возврата или чрезмерного использованияheader()
.использование
Скриншот результата
Также простой пример, как изображение, понять его гораздо проще:
источник
Я думаю, что это может быть использовано -
источник
Некоторые отличные ответы, которые добавляют больше глубины; но мне нужно было что-то более простое и более похожее на
console.log()
команду JavaScript .Я использую PHP во многих «сбора данных и превращения в XML» в приложениях Ajax. JavaScript
console.log
не работает в этом случае; это нарушает вывод XML.У Xdebug и т. Д. Были похожие проблемы.
Мое решение в Windows:
.txt
файл, который довольно легко получить и записатьerror_log
переменную PHP в.ini
файле для записи в этот файлerror_log('myTest');
PHP для отправки сообщенийЭто простое решение и большую часть времени отвечает моим потребностям. Стандартный PHP, и панель предварительного просмотра автоматически обновляется каждый раз, когда PHP пишет в него.
источник
json_encode
также решить проблему? Если это так, то, возможно, кавычки в сообщении помешали кавычкам в скрипте. (например:)echo "<script>console.log(".json_encode($msg).")</script>";
. Если нет, мне любопытно, в чем проблема, которая вызвала сбой скрипта console.log, и как / почему ваше решение это исправило. Ваше решение хорошо - я просто пытаюсь узнать больше об условиях, которые привели кconsole.log
сбою вывода xml. Во многих случаях журнал ошибок, как вы сделали, намного лучше, чем быстрыйconsole.log
.Взаимодействие PHP и JavaScript.
источник
Я считаю это полезным:
И используйте это как:
Какие выходы в консоли:
И вы можете отключить менее важные журналы, ограничив их с помощью значения $ debug.
источник
console('Even Less Important' ,6 , $debug);
это не будет отображаться в консоли? почему так? ничего выше 5 не отображается$output = '<script>console.log("' . str_repeat(" ", $priority-1)
и. '");</script>';
. Толькоimplode(",", $data)
и$data
отличается.Короткий и простой, для массивов, строк или также объектов.
источник
источник
Если вы хотите писать в лог-файл PHP, а не в консоль JavaScript, вы можете использовать это:
error_log("This is logged only to the PHP log")
Ссылка: error_log
источник
Для Chrome есть расширение Chrome Logger, позволяющее регистрировать сообщения PHP.
Firefox DevTools даже имеет встроенную поддержку протокола Chrome Logger .
Чтобы включить ведение журнала, вам просто нужно сохранить файл «ChromePhp.php» в вашем проекте. Тогда это можно использовать так:
Пример взят со страницы GitHub .
Вывод может выглядеть так:
источник
"ccampbell/chromephp": "*"
Существует также отличное расширение Google Chrome, PHP Console , с библиотекой PHP, которая позволяет:
error file:line
в ваш текстовый редактор.источник
Я искал способ отладки кода в плагине WordPress, который я разрабатывал, и наткнулся на этот пост.
Я взял фрагменты кода, наиболее подходящие для меня, из других ответов и объединил их в функцию, которую я могу использовать для отладки WordPress. Функция:
Использование заключается в следующем:
Если эта функция используется при разработке WordPress, она должна быть помещена в
functions.php
файл дочерней темы и затем вызываться в любом месте кода.источник
Я отказался от всего вышесказанного в пользу Debugger & Logger . Я не могу похвалить это достаточно!
Просто нажмите на одну из вкладок в правом верхнем углу или нажмите здесь, чтобы развернуть / скрыть.
Обратите внимание на различные «категории». Вы можете щелкнуть любой массив, чтобы развернуть / свернуть его.
С веб-страницы
источник
С 2017 года Firebug и, следовательно, FirePHP был отключен .
Я написал несколько небольших изменений в инструменте ChromePHP, чтобы обеспечить плавный переход с FirePHP на Firebug для отладки через консоль.
Эта статья объясняет в простых простых шагах
Миграция с FirePHP на ChromePHP за 5 минут (без нарушения существующего кода)
источник
Для вызовов Ajax или ответов XML / JSON, когда вы не хотите связываться с телом, вам нужно отправлять журналы через заголовки HTTP, а затем добавлять их в консоль с веб-расширением. Вот как FirePHP (больше не доступен) и QuantumPHP (форк ChromePHP) делают это в Firefox.
Если у вас есть терпение, лучше использовать x-debug - вы получите более глубокое понимание PHP с возможностью приостановить выполнение сценария, посмотреть, что происходит, а затем возобновить выполнение сценария.
источник
Я мог бы опоздать на вечеринку, но я искал реализацию функции регистрации, которая:
console.log()
,console.log()
.Итак, результат выглядит так:
(Фрагмент ниже тестируется на php
7.2.11
. Я не уверен в его обратной совместимости с php. Это может быть проблемой и для javascript (в терминах старых браузеров), потому что он создает запятую послеconsole.log()
аргументов - что не является законно покаES 2017
.)источник
Любой из этих двух работает:
источник
Вот мое решение, хорошо то, что вы можете передать столько параметров, сколько захотите.
Назови это так
Теперь вы должны видеть вывод в своей консоли, счастливое кодирование :)
источник
Использование:
источник
Вот удобная функция. Он очень прост в использовании, позволяет передавать любое количество аргументов любого типа и отображает содержимое объекта в окне консоли браузера, как если бы вы вызывали console.log из JavaScript - но из PHP
Обратите внимание, что вы также можете использовать теги, передавая «TAG-YourTag», и он будет применяться до тех пор, пока не будет прочитан другой тег, например, «TAG-YourNextTag».
ПРИМЕЧАНИЕ: func_num_args () и func_num_args () являются функциями PHP для чтения динамического числа входных аргументов и позволяют этой функции иметь бесконечно много запросов console.log за один вызов функции.
источник
Хотя это старый вопрос, я искал это. Вот моя компиляция некоторых решений, на которые даны ответы здесь, и некоторые другие идеи, найденные в других местах, чтобы получить универсальное решение для всех.
КОД:
ИСПЫТАНИЯ И ИСПОЛЬЗОВАНИЕ:
Использование простое. Включите первую функцию для публикации на консоли вручную. Используйте вторую функцию для отклонения обработки исключений php. Следующий тест должен дать представление.
ОБЪЯСНЕНИЕ:
Функция
console($data, $is_error, $file, $fn)
принимает строку или массив в качестве первого аргумента и публикует их на консоли, используя вставки js.Второй аргумент - это флаг, позволяющий отличить обычные журналы от ошибок. В случае ошибок мы добавляем прослушиватели событий, которые через оповещения сообщают нам, если возникли какие-либо ошибки, также выделяя их в консоли. Этот флаг по умолчанию имеет значение false.
Третий и четвертый аргументы являются явными объявлениями номеров файлов и строк, что необязательно. Если они отсутствуют, они по умолчанию используют предопределенную функцию php,
debug_backtrace()
чтобы получить их для нас.Следующая функция
exceptions_to_console($svr, $str, $file, $ln)
имеет четыре аргумента в порядке, вызываемом обработчиком исключений php по умолчанию. Здесь первый аргумент - серьезность, которую мы дополнительно проверяем с помощью предопределенных констант, используя функцию,severity_tag($code)
чтобы предоставить больше информации об ошибке.УВЕДОМЛЕНИЕ
Приведенный выше код использует функции и методы JS, которые недоступны в старых браузерах. Для совместимости со старыми версиями требуется замена.
Выше код предназначен для тестирования сред, где у вас есть доступ к сайту. Не используйте это на живых (производственных) сайтах.
ПРЕДЛОЖЕНИЯ:
Первая функция
console()
выдавала некоторые уведомления, поэтому я поместил их в другую функцию и вызвал ее с помощью оператора контроля ошибок '@'. Этого можно избежать, если вы не возражаете против уведомлений.И последнее, но не менее важное: всплывающие оповещения могут раздражать при кодировании. Для этого я использую этот звуковой сигнал (находится в решении: https://stackoverflow.com/a/23395136/6060602 ) вместо всплывающих предупреждений. Это довольно круто и возможности безграничны, вы можете играть в свои любимые мелодии и сделать кодирование менее напряженным.
источник