Как я могу писать в консоль на PHP?



можно ли записать строку или войти в консоль?



что я имею в виду



Так же, как в jsp, если мы печатаем что-то вроде system.out.println("some") Он будет там на консоли, а не на странице.

1210   23  

23 ответов:

Firefox

в Firefox вы можете использовать расширение под названием FirePHP что позволяет регистрировать и сбрасывать информацию из ваших PHP-приложений на консоль. Это аддон к удивительному расширению веб-разработки Firebug.

Chrome

однако, если вы с помощью Chrome есть инструмент отладки PHP под названием Chrome Logger или webug (webug имеет проблемы с заказом журналов).

совсем недавно часам находится в активной разработке, которая расширяет инструменты разработчика, добавляя новую панель для предоставления полезной информации об отладке и профилировании. Он обеспечивает из коробки поддержку Laravel 4 и Slim 2 и поддержка может быть добавлена через расширяемый API.

С Помощью Xdebug

лучший способ отладки PHP будет через Xdebug. Большинство браузеров предоставляют вспомогательные расширения, чтобы помочь вам передать необходимую строку cookie / query для инициализации процесса отладки.

или вы используете трюк с этого сайта PHP Debug to console

сначала вам нужно немного 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

Если вы ищете простой подход, echo как JSON:

<script>
    console.log(<?= json_encode($foo); ?>);
</script>

по умолчанию все выходные данные идут в stdout, который является ответом HTTP или консолью, в зависимости от того, выполняется ли ваш скрипт Apache или вручную в командной строке. Но вы можете использовать error_log для регистрации и различные потоки ввода/вывода может быть записано с fwrite.

попробуйте это работает :

echo("<script>console.log('PHP: ".$data."');</script>");

некоторые отличные ответы, которые добавляют больше глубины; но мне нужно было что-то более простое и похожее на JS .

Я использую PHP во многих "сбор данных и превращение в xml" в приложении AJAX. JS console.log не работает в этом случае; он нарушает вывод xml. (Может быть, у кого-то есть решение для этого?)

отладчик xdebug и т. д. были подобные вопросы.

мое решение в Windows:

  • настройка a .txt файл, который несколько легко получить и писать
  • установите PHP error_log переменная .ini файл для записи в этот файл
  • откройте файл в проводнике Windows и откройте для него панель предварительного просмотра
  • использовать error_log('myTest'); PHP команда для отправки сообщений

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

как автор связанной веб-страницы int the популярный ответ выше я хотел бы добавить мою последнюю версию этой простой вспомогательной функции, гораздо более твердый.

Я использую 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 );`

скриншот результата

также простой пример как изображение понять гораздо проще.

enter image description here

Я нахожу это полезным:

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

    echo "<div display='none'><script type='text/javascript'>console.log('console log message')</script></div>";

создает

      <div>

С

    display="none"

так что div не отображается, но

    console.log()

функция создается в javascript. Таким образом, вы получаете сообщение в консоли.

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" )

Ссылка:http://php.net/manual/en/function.error-log.php

для Chrome есть расширение под названием Chrome Logger позволяет регистрировать сообщения PHP.

в Firefox DevTools даже есть встроенная поддержка протокола Chrome Logger.

чтобы включить ведение журнала, вам просто необходимо сохранить 'ChromePhp.php ' file в вашем проекте. Тогда он может быть использован следующим образом:

include 'ChromePhp.php';
ChromePhp::log('Hello console!');
ChromePhp::log($_SERVER);
ChromePhp::warn('something went wrong!');

пример взят из страница GitHub.

в вывод может выглядеть следующим образом:

Server log within Firefox DevTools

существует также большое расширение Google Chrome консоль PHP С php библиотека что позволяет:

  • см. раздел ошибки и исключения в консоли Chrome JavaScript и во всплывающих окнах уведомлений.
  • дамп любой переменной типа.
  • выполнить PHP код удаленно.
  • защита доступа паролем.
  • групповые журналы консоли по запросу.
  • перейти к файлу ошибка:строка в текстовом редакторе.
  • копировать ошибка / отладка данных в буфер обмена (для тестеров).

Я отказался от всего вышеперечисленного в пользу http://phptoolcase.com/guides/ptc-debug-guide.html я не могу похвалить его достаточно!

просто нажмите на одну из вкладок в правом верхнем углу, или на "Нажмите здесь", чтобы развернуть/скрыть.

обратите внимание на различные "категории". Вы можете щелкнуть любой массив, чтобы развернуть / собрать его.

С веб-страницы

"Основные Характеристики:

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

" enter image description here

отличный пост спасибо, я искал способ отладки кода в плагине 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 функция должна быть размещена в функциях.php-файл дочерней темы, а затем может быть вызван в любом месте кода.

$variable = "Variable";
echo "<script>console.log('$variable');</script>";

взаимодействие PHP и Javascript.

с 2017 года firebug и, следовательно, firephp были отключены.

Я написал несколько небольших модификаций инструмента chromephp, чтобы обеспечить плавную миграцию из firephp в firebug для отладки через консоль.

эта статья объясняет простых шагов

https://medium.com/@kudehinbuoluwaponle/migrate-from-firephp-to-chromephp-in-5-minutes-without-breaking-existing-code-e4afd1b28c5c

для вызовов Ajax или ответов xml / json, где вы не хотите возиться с телом, вам нужно отправить журналы через заголовки http, а затем добавить их в консоль с веб-расширением. Вот как FirePHP и QuantumPHP (вилка ChromePHP) делают это в Firefox.

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

любой из этих двух работает:

<?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>");
?>
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 );

}

вот удобная функция. Он очень прост в использовании, позволяет передавать столько аргументов, сколько вам нравится, любого типа, и будет отображать содержимое объекта в окне консоли браузера, как если бы вы вызвали консоль.вход из JavaScript-но из PHP

обратите внимание, что вы также можете использовать теги, передавая "TAG-YourTag", и он будет применяться до тех пор, пока не будет прочитан другой тег, например, "TAG-YourNextTag"

/*
*   Brief:          Print to console.log() from PHP
*   Description:    Print as many strings,arrays, objects, and other data types to console.log from PHP.
*                   To use, just call consoleLog($data1, $data2, ... $dataN) and each dataI will be sent to console.log - note that
*                   you can pass as many data as you want an this will still work.
*
*                   This is very powerful as it shows the entire contents of objects and arrays that can be read inside of the browser console log.
*                   
*                   A tag can be set by passing a string that has the prefix TAG- as one of the arguments. Everytime a string with the TAG- prefix is
*                   detected, the tag is updated. This allows you to pass a tag that is applied to all data until it reaches another tag, which can then
*                   be applied to all data after it.
*
*                   Example:
*                   consoleLog('TAG-FirstTag',$data,$data2,'TAG-SecTag,$data3); 
*                   Result:
*                       FirstTag '...data...'
*                       FirstTag '...data2...'
*                       SecTag   '...data3...' 
*/
function consoleLog(){
    if(func_num_args() == 0){
        return;
    }

    $tag = '';
    for ($i = 0; $i < func_num_args(); $i++) {
        $arg = func_get_arg($i);
        if(!empty($arg)){       
            if(is_string($arg)&& strtolower(substr($arg,0,4)) === 'tag-'){
                $tag = substr($arg,4);
            }else{      
                $arg = json_encode($arg, JSON_HEX_TAG | JSON_HEX_AMP );
                echo "<script>console.log('".$tag." ".$arg."');</script>";
            }       
        }
    }
}

Примечание: func_num_args () и func_num_args () являются php-функциями для чтения динамического числа входных аргументов и позволяют этой функции иметь бесконечно много консолей.регистрируйте запросы от одного вызова функции

Comments

    Ничего не найдено.