Возможно ли записать строку или войти в консоль?
Как и в jsp, если мы печатаем что-то вроде system.out.println("some")
оно будет на консоли не на странице.
Fire Fox
В Firefox вы можете использовать расширение под названием FirePHP, которое позволяет записывать и удалять информацию из ваших приложений PHP на консоль. Это дополнение к удивительному расширению веб-разработки Firebug .
Хром
Однако, если вы используете Chrome, есть инструмент отладки PHP, называемый webug или Chrome Logger .
Совсем недавно Clockwork находится в активной разработке, которая расширяет инструменты разработчика, добавляя новую панель для предоставления полезной информации для отладки и профилирования. Он обеспечивает поддержку Box Larvel 4 и Slim 2, а поддержка может быть добавлена через расширяемый API.
Использование Xdebug
Лучшим способом отладки вашего PHP будет Xdebug . Большинство браузеров предоставляют вспомогательные расширения, которые помогут вам передать требуемую строку cookie / query для инициализации процесса отладки.
Или вы используете трюк с этого сайта PHP Debug для консоли
Сначала вам нужна небольшая вспомогательная функция PHP
function debug_to_console( $data ) { $output = $data; if ( is_array( $output ) ) $output = implode( ',', $output); echo "<script>console.log( 'Debug Objects: " . $output . "' );</script>"; }
Тогда вы можете использовать его так
debug_to_console( "Test" );
Это создаст такой вывод:
Debug Objects: Test
Если вы ищете простой подход, эхо, как JSON:
<script> console.log(<?= json_encode($foo); ?>); </script>
По умолчанию все выходные данные поступают на stdout
, который является ответом HTTP или консолью, в зависимости от того, запущен ли ваш скрипт Apache или вручную в командной строке. Но вы можете использовать error_log
для ведения журнала, и различные потоки ввода-вывода могут быть записаны с помощью fwrite
.
Попробуйте это, он работает:
echo("<script>console.log('PHP: ".$data."');</script>");
Некоторые отличные ответы, которые добавляют больше глубины; но мне было нужно что-то более простое и более похожее на команду JS console.log()
.
Я использую PHP во множестве «сбора данных и превращения в xml» в приложение AJAX. JS console.log
не работает в этом случае; он прерывает вывод xml. (Может быть, у кого-то есть решение для этого?)
Xdebug и т. Д. Имели схожие проблемы.
Мое решение в Windows:
.txt
который можно легко получить и записать error_log
в файле .ini
для записи в этот файл error_log('myTest');
Команда PHP для отправки сообщений Это простое решение, которое удовлетворяет мои потребности в большинстве случаев, стандартный PHP, а панель предварительного просмотра автоматически обновляется каждый раз, когда PHP пишет на нее.
Как автор связанной веб-страницы int, в популярном ответе выше, я хотел бы добавить свою последнюю версию этой простой вспомогательной функции, гораздо более прочную.
Я использую json_encode()
чтобы сделать проверку типа var не необходимой и добавить также буфер для решения проблем с фреймворками, там нет твердого возврата или чрезмерного использования header()
.
/** * Simple helper to debug to the console * * @param $data object, array, string $data * @param $context string Optional a description. * * @return string */ function debug_to_console( $data, $context = 'Debug in Console' ) { // Buffering to solve problems frameworks, like header() in this and not a solid return. ob_start(); $output = 'console.info( \'' . $context . ':\' );'; $output .= 'console.log(' . json_encode( $data ) . ');'; $output = sprintf( '<script>%s</script>', $output ); echo $output; }
// $data is the example var, object; here an array. $data = [ 'foo' => 'bar' ]; debug_to_console( $data );`
Также простой пример, как изображение, чтобы понять намного проще.
Я нахожу это полезным:
function console($data, $priority, $debug) { if ($priority <= $debug) { if (is_array($data)) $output = '<script>console.log("' . str_repeat(" ", $priority-1) . implode( ",", $data) . '");</script>'; else $output = '<script>console.log("' . str_repeat(" ", $priority-1) . $data . '");</script>'; echo $output; } }
И используйте его как:
<?php $debug = 5; // All lower and equal priority logs will be displayed console('Important' ,1 , $debug); console('Less Important' ,2 , $debug); console('Even Less Important' ,5 , $debug); console('Again Important' ,1 , $debug); ?>
Какие выходы в консоли:
Important Less Important Even Less Important Again Important
И вы можете отключить менее важные журналы, ограничив их использованием $ debug value
function phpconsole($label='var',$x){ ?> <script type="text/javascript"> console.log('<?php echo ($label)?>'); console.log('<?php echo json_encode($x)?>'); </script> <?php }
Короткий и легкий, для массивов, строк или также объектов.
function console_log( $data ) { $output = "<script>console.log( 'PHP debugger: "; $output .= json_encode(print_r($data, true)); $output .= "' );</script>"; echo $output; }
Я думаю, что он может быть использован –
function jsLogs($data) { $html = ""; if(is_array($data) || is_object($data)) { $html = "<script>console.log('PHP: ".json_encode($data)."');</script>"; } else { $html = "<script>console.log('PHP: ".$data."');</script>"; } echo($html); # exit(); } jsLogs(array("test1", "test2")); # PHP: ["test1","test2"] jsLogs(array("test1"=>array("subtest1", "subtest2"))); #PHP: {"test1":["subtest1","subtest2"]} jsLogs("testing string"); #PHP: testing string
Если вы хотите записать в файл журнала PHP, а не в консоль JavaScript, вы можете использовать это:
error_log ( "This is logged only to the PHP log" )
Для Chrome есть расширение под названием Chrome Logger, позволяющее регистрировать сообщения PHP.
В Firefox DevTools даже встроена поддержка протокола Chrome Logger .
Чтобы включить ведение журнала, вам просто нужно сохранить файл «ChromePhp.php» в своем проекте. Затем его можно использовать следующим образом:
include 'ChromePhp.php'; ChromePhp::log('Hello console!'); ChromePhp::log($_SERVER); ChromePhp::warn('something went wrong!');
Пример, взятый на странице GitHub .
Результат может выглядеть следующим образом:
Существует также отличная консоль PHP для Google Chrome с библиотекой php, которая позволяет:
Я отказался от всего вышеперечисленного в пользу http://phptoolcase.com/guides/ptc-debug-guide.html. Я не могу хвалить его достаточно!
Просто нажмите на одну из вкладок вверху справа или на «нажмите здесь», чтобы развернуть / скрыть.
Обратите внимание на разные «категории». Вы можете щелкнуть любой массив, чтобы развернуть / свернуть его.
Fromn веб-страницы
«Основные характеристики:
Show globals vars ($GLOBALS, $_POST, $_GET, $_COOKIE ...) Show php version and loaded extensions Replace php built in error handler Log sql queries Monitor code and sql queries execution time Inspect variables for changes Function calls tracing Code coverage analysis to check which lines of script where executed Dump of all types of variable File inspector with code highlighter to view source code Send messages to js console(Chrome only), for ajax scripts
"
echo "<div display='none'><script type='text/javascript'>console.log('console log message')</script></div>";
Создает
<div>
с
display="none"
так что div не отображается, но
console.log()
функция создается в javascript. Таким образом, вы получаете сообщение в консоли.
Любой из этих двух работает:
<?php $five = 5; $six = 6; ?> <script> console.log(<?php echo $five + $six ?>); </script> <?php $five = 5; $six = 6; echo("<script>console.log($five + $six);</script>"); ?>
Отличная почта, спасибо, я искал способ отладки кода в плагине WordPress, который я разрабатывал, и наткнулся на этот пост.
Я взял биты кода, которые наиболее применимы ко мне из ответов выше, и объединили их в функцию, которую я могу использовать для отладки WordPress. Функция:
function debug_log( $object=null, $label=null, $priority=1 ){ $priority = $priority<1? 1: $priority; $message = json_encode($object, JSON_PRETTY_PRINT); $label = "Debug" . ($label ? " ($label): " : ': '); echo "<script>console.log('".str_repeat("-", $priority-1).$label."', ".$message.");</script>"; }
Используется следующее:
$txt = 'This is a test string'; $sample_array = array('cat', 'dog', 'pig', 'ant', 'fly'); debug_log( $txt,'',7 ); debug_log( $sample_array );
Я надеюсь, что кто-то еще найдет эту функцию полезной.
Если эта функция используется при разработке WordPress, функция должна быть помещена в файл functions.php дочерней темы и затем может быть вызвана в любом месте кода.
Начиная с 2017 года, firebug и, следовательно, firephp были отключены.
Я написал несколько небольших изменений в инструменте chromephp, чтобы обеспечить плавный переход от firephp к firebug для отладки через консоль.
Эта статья объясняет в простых простых шагах
$variable = "Variable"; echo "<script>console.log('$variable');</script>";
PHP и Javascript взаимодействия.
Для вызовов Ajax или ответов xml / json, где вы не хотите взаимодействовать с телом, вам нужно отправлять журналы через HTTP-заголовки, а затем добавлять их в консоль с помощью веб-расширения. Так FirePHP и QuantumPHP (вилка ChromePHP) делают это в Firefox.
Если у вас есть терпение, x-debug – лучший вариант – вы получаете более глубокое понимание PHP, с возможностью приостановки сценария, просмотра происходящего, а затем возобновления сценария.
function console_log( $data ) { $bt = debug_backtrace(); $caller = array_shift($bt); if ( is_array( $data ) ) error_log( end(split('/',$caller['file'])) . ':' . $caller['line'] . ' => ' . implode( ',', $data) ); else error_log( end(split('/',$caller['file'])) . ':' . $caller['line'] . ' => ' . $data ); }