मैं PHP में कंसोल को कैसे लिख सकता हूं?


324

क्या यह एक स्ट्रिंग लिखना संभव है या कंसोल में लॉग इन करना है?

मेरा मतलब

जेएसपी की तरह, अगर हम कुछ ऐसा प्रिंट करते हैं system.out.println("some"), तो यह एक पृष्ठ पर नहीं बल्कि कंसोल पर होगा।

जवाबों:


145

फ़ायरफ़ॉक्स

फ़ायरफ़ॉक्स पर आप FirePHP नामक एक एक्सटेंशन का उपयोग कर सकते हैं जो आपके PHP अनुप्रयोगों से कंसोल तक जानकारी को लॉग करने और डंप करने में सक्षम बनाता है। यह भयानक वेब विकास विस्तार फायरबग का एक ऐडऑन है

क्रोम

हालाँकि, यदि आप क्रोम का उपयोग कर रहे हैं, तो क्रोम लॉगर या वेबग नामक एक PHP डिबगिंग टूल है (वेबग में लॉग्स के क्रम में समस्याएं हैं)।

हाल ही में क्लॉकवर्क सक्रिय विकास में है जो उपयोगी डिबगिंग और प्रोफाइलिंग जानकारी प्रदान करने के लिए एक नया पैनल जोड़कर डेवलपर टूल्स का विस्तार करता है। यह लारावेल 4 और स्लिम 2 के लिए बॉक्स समर्थन से बाहर प्रदान करता है और इसके एक्स्टेंसिबल एपीआई के माध्यम से समर्थन जोड़ा जा सकता है।

Xdebug का उपयोग करना

अपने PHP को डिबग करने का एक बेहतर तरीका Xdebug के माध्यम से होगा । डीबगिंग प्रक्रिया प्रारंभ करने के लिए आवश्यक कुकी / क्वेरी स्ट्रिंग पास करने के लिए अधिकांश ब्राउज़र सहायक एक्सटेंशन प्रदान करते हैं।


5
PHP को Xdebug हेल्पर डीबग करने के लिए एक सफारी एक्सटेंशन भी है। मैंने इसे इस पृष्ठ से स्थापित किया है: Extension.apple.com/#tab
Mark Mckelvie

3
फायर PHP लिंक मृत है
ब्रायन लीशमैन

9
इको "<script> कंसोल.लॉग ('PHP:',", get_option ("स्लाइड्स_डेटा", "); </ script>";
अज़मत करीम खान

4
ओपी कहता है कि वह मानक आउटपुट पर प्रिंट करना चाहता था, html / js कंसोल पर नहीं।
beppe9000

6
FirePHP आधिकारिक तौर पर मृत है।
टिमस्पेरो

407

या आप कंसोल को PHP डीबग से ट्रिक का उपयोग करते हैं ।

पहले आपको थोड़ा 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

5
FireFox v27 में यह आउटपुट करता है"Debug Objects: " . $data . ""
Mawg का कहना है कि मोनिका

इसे और अधिक उपयोगी बनाने का एकमात्र तरीका यह होगा कि एक चर $ नाम: लॉग में 'डेटा' जोड़ी हो। हालांकि अच्छा काम किया।
शाही

10
@Mawg (और जो लोग उस टिप्पणी को अपवित्र करते हैं): यदि $dataआउटपुट में प्रकट होता है, तो आपने फ़ंक्शन को ठीक से नहीं दिखाया गया है। अपने एकल और दोहरे उद्धरणों को ध्यान से देखें, यह सुनिश्चित करने के लिए कि वे ऊपर दिए गए कोड से मेल खाते हैं। $dataएक php वेरिएबल है; जब तक पृष्ठ को ब्राउज़र में भेजा जाता है, तब तक php वैरिएबल को पास किए गए पैरामीटर द्वारा बदल दिया जाएगा debug_to_console। ब्राउज़र को कभी नहीं देखना चाहिए $data। (यदि आप page sourceब्राउज़र में देखते हैं, तो यह नहीं कहना चाहिए $data।)
टूलमेकरसैट

1
मेरी पोस्ट के संकेत के लिए धन्यवाद। लेकिन समय और ज्ञान बदल गया है, फ़ंक्शन भी;) मेरे पास अब यह अपडेट है।
१६'१६

3
तो, दूसरे शब्दों में, इसका उत्तर यह है: इको "<स्क्रिप्ट> कंसोल.लॉग ('डीबग ऑब्जेक्ट:" $ आउटपुट। "); </ स्क्रिप्ट>";
क्रिस्टीन

68

यदि आप एक सरल दृष्टिकोण की तलाश कर रहे हैं, तो JSON के रूप में प्रतिध्वनित करें:

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

4
यह थोड़ा और संदर्भ जोड़ता है: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>"; }
रॉबर्डॉर्ड

ओपी कहता है कि वह मानक आउटपुट पर प्रिंट करना चाहता था, html / js कंसोल पर नहीं।
beppe9000

@ beppe9000 यह गलत है। ओपी पूछता है कि क्या वह PHP से कंसोल तक लिख सकता है। उद्धरण: "क्या यह संभव है कि स्ट्रिंग लिखें या कंसोल में लॉग करें?"
डावसन इरविन

इससे आप var_dumps और समान से बच सकते हैं। बढ़िया काम करता है और कंसोल आपको अच्छे तरीके से जॉगिंग करने देता है।
म्बोकेट

41

डिफ़ॉल्ट रूप से, सभी आउटपुट में जाता है stdout, जो कि HTTP प्रतिक्रिया या कंसोल है, जो इस बात पर निर्भर करता है कि आपकी स्क्रिप्ट Apache द्वारा संचालित है या मैन्युअल रूप से कमांड लाइन पर। लेकिन आप error_logलॉगिंग के लिए उपयोग कर सकते हैं और विभिन्न I / O स्ट्रीम के साथ लिखा जा सकता है fwrite


8
धन्यवाद, error_logक्या मैं PHP में निर्मित वेब सर्वर
मार्टीन Coll

37

निम्नलिखित का प्रयास करें। यह काम कर रहा है:

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

5
यह बहुत वास्तविक समय नहीं है, क्योंकि php सभी पेज को एक बार भेज देता है, क्योंकि यह प्रोसेसिंग समाप्त हो गया है। इसके अलावा, अगर php फ़ाइल में कोई त्रुटि है, तो आपको कोई भी लॉग देखने को नहीं मिलेगा, क्योंकि यह केवल एक त्रुटि पेज लौटाएगा, इस प्रकार आपके पहले के प्रिंटों को अनदेखा कर देगा।
मिरो मार्कार्वेंस

1
मैं यह बताना चाहता हूं कि @MiroMarkaravanes बिल्कुल सही है - घातक त्रुटियां आपके कंसोल.लॉग को आउटपुट करने से रोक सकती हैं जब तक कि आप हर एक संभावित त्रुटि को संभालना / पकड़ना सुनिश्चित नहीं करते। खासतौर पर आउटपुट बफ़रिंग का उपयोग करते समय - यदि आपका बफर स्क्रीन पर नहीं आता है, तो न ही आपका कंसोल.लॉग आउटपुट करता है। यह कुछ करने के लिए दिमाग होना है
व्हॉटशॉटड

1
ओपी कहता है कि वह मानक आउटपुट पर प्रिंट करना चाहता था, html / js कंसोल पर नहीं।
beppe9000

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

बनाता है a

<div>

उसके साथ

display="none"

ताकि div प्रदर्शित न हो, लेकिन

console.log()

फ़ंक्शन जावास्क्रिप्ट में बनाया गया है। इसलिए आपको संदेश कंसोल में मिलता है।


3
तकनीकी रूप से यह प्रारंभिक प्रश्न का सही उत्तर है - PHP से ब्राउज़र कंसोल पर कैसे लिखें। लेकिन मुझे लगता है कि लेखक PHP को डीबग करने की कोशिश कर रहा है इसलिए बेहतर विकल्प हैं। हालांकि इसे कम नहीं किया जाना चाहिए, कड़ाई से यह एक सही जवाब है।
रॉल्फ

1
मैं निश्चित रूप से सिर्फ यह अविश्वसनीय रूप से उपयोगी पाया!
अल्बर्ट

इसे सरल रखते हुए, यह समाधान महान है क्योंकि यह आत्म व्याख्यात्मक है। खासतौर पर तब जब आपके पास उस समय चबाने के लिए बहुत कुछ हो जैसा कि मैं अभी कर रहा हूं।
ओलू अडाबोनीन

2
मुझे समझ नहीं आ रहा है कि आपको भी इसकी आवश्यकता क्यों है div। यदि आपके पास बस एक <script>ब्लॉक है, तो ब्राउज़र में कुछ भी प्रदर्शित नहीं किया जाएगा।
कोदोस जॉनसन

1
इसके अलावा, यदि आपका त्रुटि संदेश किसी चर में संग्रहीत है, या यदि उसमें उद्धरण चिह्न हैं, तो आप संदेश को कॉल में लपेटने के लिए अच्छी तरह से करेंगे json.encodeताकि उद्धरण चिह्न आपके कोड की रेखा को न तोड़ें। उदाहरण के लिए:echo "<script>console.log(".json_encode($msg).")</script>";
शेरलहोमन

18

लोकप्रिय उत्तर में लिंक किए गए वेबपेज के लेखक के रूप में , मैं इस सरल सहायक फ़ंक्शन के अपने अंतिम संस्करण को जोड़ना चाहूंगा। यह बहुत अधिक ठोस है।

json_encode()यदि चर प्रकार आवश्यक नहीं है और फ्रेमवर्क के साथ समस्याओं को हल करने के लिए एक बफर भी जोड़ते हैं, तो मैं इसके लिए एक जांच करने के लिए उपयोग करता हूं । इसका ठोस प्रतिफल या अत्यधिक उपयोग नहीं है 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 variable, object; here an array.
$data = [ 'foo' => 'bar' ];
debug_to_console($data);`

परिणाम का स्क्रीनशॉट

इसे आसान समझने के लिए छवि के रूप में भी एक सरल उदाहरण:

यहां छवि विवरण दर्ज करें


मैं जबकि कर इस विचार की तरह, आप इस बात की पुष्टि कर सकता है कि यह अजाक्स अनुरोध के लिए उपयुक्त नहीं हो सकता है?
मावग का कहना है कि मोनिका जूल

1
हां, यह शुद्ध स्थिर php है, न कि अजाक्स।
बजे

लेकिन, यह एचएमएल / जेएस कोड ओटी को एक पृष्ठ निकाय के रूप में जोड़ता है - और मेरा अजाक्स कोई पृष्ठ निकाय नहीं देता है। क्षमा करें, लेकिन मैं ओटी की मदद करने के लिए
थैंक्स एंड अंडरस्कैंड नहीं करता

1
अजाक्स कॉल का अनुरोध करने से पहले आपको हेल्पर फ़ंक्शन को ट्रिगर करना चाहिए, फिर आपको कंसोल में भी परिणाम मिलेगा।
बजे

इसलिए मैंने एक चर वहाँ रखा और प्रत्येक वर्ण अपनी पंक्ति में समाप्त हो गया। जिज्ञासु की तरह क्यों ऐसा करने के लिए? कभी भी
कंसोल का

17

मुझे लगता है कि इसका इस्तेमाल किया जा सकता है -

function jsLogs($data) {
    $html = "";
    $coll;

    if (is_array($data) || is_object($data)) {
        $coll = json_encode($data);
    } else {
        $coll = $data;
    }

    $html = "<script>console.log('PHP: ${coll}');</script>";

    echo($html);
    # exit();
}

# For String
jsLogs("testing string"); #PHP: testing string

# For Array
jsLogs(array("test1", "test2")); # PHP: ["test1","test2"]

# For Object
jsLogs(array("test1"=>array("subtest1", "subtest2"))); #PHP: {"test1":["subtest1","subtest2"]}

3
बहुत परिष्कृत एक। धन्यवाद @ पंकज बिष्ट
विकर १18

2
एक स्पष्टीकरण क्रम में होगा।
पीटर मोर्टेंसन

14

कुछ महान उत्तर जो अधिक गहराई जोड़ते हैं; लेकिन मुझे जावास्क्रिप्ट console.log()कमांड की तरह कुछ सरल और अधिक की आवश्यकता थी ।

मैं अजाक्स अनुप्रयोगों में "बहुत सारे डेटा इकट्ठा करने और एक्सएमएल में बारी" में PHP का उपयोग करता हूं। जावास्क्रिप्ट console.logउस मामले में काम नहीं करता है; यह XML आउटपुट को तोड़ता है।

Xdebug, आदि के समान मुद्दे थे।

विंडोज में मेरा समाधान:

  • एक .txtफाइल को सेट करें जो कुछ आसानी से और लिखने योग्य हो
  • में PHP error_logचर सेट करें.ini फ़ाइल को लिखने के लिए फ़ाइल
  • Windows फ़ाइल एक्सप्लोरर में फ़ाइल खोलें और इसके लिए एक पूर्वावलोकन फलक खोलें
  • error_log('myTest');संदेश भेजने के लिए PHP कमांड का उपयोग करें

यह समाधान सरल है और ज्यादातर समय मेरी जरूरतों को पूरा करता है। मानक PHP और पूर्वावलोकन फलक स्वचालित रूप से हर बार अद्यतन करता है जब PHP इसे लिखता है।


क्या संदेश को लपेटने से json_encodeभी समस्या हल हो जाएगी? यदि हां, तो यह हो सकता है कि स्क्रिप्ट में उद्धरण चिह्नों के साथ हस्तक्षेप किए गए संदेश के भीतर उद्धरण चिह्न। (उदाहरण के लिए:) echo "<script>console.log(".json_encode($msg).")</script>";। यदि नहीं, तो मैं उत्सुक हूं कि क्या मुद्दा था जो कंसोल.लॉग स्क्रिप्ट को तोड़ने का कारण बना, और आपके समाधान ने कैसे / क्यों तय किया। आपका समाधान अच्छा है - मैं सिर्फ उन स्थितियों के बारे में अधिक जानने की कोशिश कर रहा हूं जिनके कारण console.logया xml आउटपुट टूट गया है। कई मामलों में, आपके द्वारा किया गया एक त्रुटि लॉग एक त्वरित की तुलना में बहुत बेहतर है console.log
शेरलहोमन

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

PHP और जावास्क्रिप्ट बातचीत।


एक स्पष्टीकरण क्रम में होगा। क्या आप विस्तृत रूप से ( अपने उत्तर को संपादित कर सकते हैं , टिप्पणियों में उत्तर देकर नहीं)?
पीटर मॉर्टेंसन

11

मुझे यह मददगार लगता है:

function console($data, $priority, $debug)
{
    if ($priority <= $debug)
    {
        $output = '<script>console.log("' . str_repeat(" ", $priority-1) . (is_array($data) ? implode(",", $data) : $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

और आप $ डिबग मूल्य का उपयोग करके उन्हें कम महत्वपूर्ण लॉग को बंद कर सकते हैं।


इसलिए यदि आप कहते हैं कि console('Even Less Important' ,6 , $debug);यह कंसोल में प्रदर्शित नहीं किया जाएगा? ऐसा क्यों? 5 से ऊपर कुछ भी नहीं है
HattrickNZ

2
@HattrickNZ यह आपको लॉग संदेश के विभिन्न स्तरों की अनुमति देता है। यदि आप डिबगिंग कर रहे हैं, तो आप बहुत सारी जानकारी के साथ संदेश की एक बहुत ही चटपटी धारा दिखाना चाह सकते हैं, हालाँकि सामान्य संचालन के दौरान आप डिबग को 1 पर सेट कर सकते हैं ताकि आपको केवल सबसे महत्वपूर्ण त्रुटियाँ / लॉग आइटम प्रदर्शित हों। आपको यह तय करना है कि कोड लिखते समय कौन सी चीजें महत्वपूर्ण हैं।
टॉबी एलेन

ओपी कहता है कि वह मानक आउटपुट पर प्रिंट करना चाहता था, html / js कंसोल पर नहीं।
beppe9000

1
हां, लेकिन बार-बार कोड (अतिरेक) - को फिर से सक्रिय किया जाना चाहिए: $output = '<script>console.log("' . str_repeat(" ", $priority-1)और . '");</script>';। केवल implode(",", $data)और $dataअलग है।
पीटर मॉर्टेंसन

1
@ पेटर मोर्टेंसन - सच्ची कहानी! इस 4yo पोस्ट पर संपादित! :)
ज़ी

7

ऐरे, स्ट्रिंग्स या ऑब्जेक्ट्स के लिए लघु और आसान।

function console_log( $data ) {
  $output  = "<script>console.log( 'PHP debugger: ";
  $output .= json_encode(print_r($data, true));
  $output .= "' );</script>";
  echo $output;
}

1
ओपी कहता है कि वह सर्वर-साइड टर्मिनल / मानक आउटपुट पर प्रिंट करना चाहता था, html / js कंसोल पर नहीं।
beppe9000

7
function phpconsole($label='var', $x) {
    ?>
    <script type="text/javascript">
        console.log('<?php echo ($label)?>');
        console.log('<?php echo json_encode($x)?>');
    </script>
    <?php
}

1
ओपी कहता है कि वह सर्वर-साइड टर्मिनल / मानक आउटपुट पर प्रिंट करना चाहता था, html / js कंसोल पर नहीं।
beppe9000

7

यदि आप PHP लॉग फ़ाइल में लिखना चाहते हैं, और जावास्क्रिप्ट कंसोल नहीं तो आप इसका उपयोग कर सकते हैं:

error_log("This is logged only to the PHP log")

संदर्भ: error_log


तो बस ssh में कूद और लॉग पूंछ
हेडन थ्रिंग

6

क्रोम के लिए क्रोम लॉगर नाम का एक एक्सटेंशन है PHP संदेशों को लॉग इन करने की अनुमति देता है।

फ़ायरफ़ॉक्स DevTools में भी क्रोम लकड़हारा प्रोटोकॉल के लिए एकीकृत समर्थन है

लॉगिंग को सक्षम करने के लिए, आपको बस अपने प्रोजेक्ट में 'ChromePhp.php' फ़ाइल को सहेजना होगा । तो यह इस तरह इस्तेमाल किया जा सकता है:

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

उदाहरण GitHub पृष्ठ से लिया गया है

आउटपुट तब इस तरह दिख सकता है:

फ़ायरफ़ॉक्स DevTools के भीतर सर्वर लॉग


आप इसे संगीतकार के माध्यम से भी स्थापित कर सकते हैं:"ccampbell/chromephp": "*"
padawanTony

5

PHP लाइब्रेरी के साथ एक शानदार Google Chrome एक्सटेंशन, PHP कंसोल भी है , जो आपको अनुमति देता है:

  • Chrome जावास्क्रिप्ट कंसोल और सूचना पॉपअप में त्रुटियां और अपवाद देखें।
  • किसी भी प्रकार का चर डंप करना।
  • दूर से PHP कोड निष्पादित करें।
  • पासवर्ड द्वारा पहुंच सुरक्षित करें।
  • समूह कंसोल अनुरोध द्वारा लॉग करता है।
  • error file:lineअपने टेक्स्ट एडिटर में कूदें ।
  • कॉपी त्रुटि / डिबग डेटा क्लिपबोर्ड (परीक्षकों के लिए)।

1
जेएस कंसोल को PHP त्रुटियों, अपवाद और उपयोगकर्ता-परिभाषित डिबगिंग आउटपुट लिखने की मेरी पसंदीदा विधि। मैं इसे वर्षों से उपयोग कर रहा हूं - अत्यधिक विश्वसनीय और PHP संशोधनों के साथ अद्यतित रखा गया है। मैं कुछ और उपयोग नहीं करेगा।
वेलोजेट

3

मैं एक वर्डप्रेस प्लगइन में कोड को डिबग करने का एक तरीका ढूंढ रहा था जिसे मैं विकसित कर रहा था और इस पोस्ट के पार आया था।

मैंने उन कोड के बिट्स ले लिए जो अन्य प्रतिक्रियाओं से मेरे लिए सबसे अधिक लागू होते हैं और इन्हें एक ऐसे फंक्शन में मिलाया जाता है जिसका उपयोग मैं वर्डप्रेस को डिबग करने के लिए कर सकता हूं। समारोह है:

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

यदि इस फ़ंक्शन का उपयोग वर्डप्रेस विकास के साथ किया जाता है, तो फ़ंक्शन को functions.phpचाइल्ड थीम की फ़ाइल में रखा जाना चाहिए और फिर कोड में कहीं भी बुलाया जा सकता है।


2

मैंने डिबगर और लॉगर के पक्ष में उपरोक्त सभी को छोड़ दिया है । मैं इसकी पर्याप्त प्रशंसा नहीं कर सकता!

बस ऊपर दाईं ओर स्थित किसी एक टैब पर क्लिक करें, या विस्तार / छिपाने के लिए "यहां क्लिक करें" पर।

विभिन्न "श्रेणियों" पर ध्यान दें। आप इसे विस्तृत / संक्षिप्त करने के लिए किसी भी सरणी पर क्लिक कर सकते हैं।

वेब पेज से

मुख्य विशेषताएं:

  • ग्लोबल्स चर दिखाएं ($ GLOBALS, $ _POST, $ _GET, $ _COOKIE, आदि)
  • PHP संस्करण और लोडेड एक्सटेंशन दिखाएं
  • त्रुटि हैंडलर में निर्मित PHP को बदलें
  • SQL क्वेरी लॉग करें
  • मॉनिटर कोड और SQL क्वेरीज़ का निष्पादन समय
  • परिवर्तनों के लिए चर का निरीक्षण करें
  • फ़ंक्शन कॉल ट्रेसिंग
  • कोड कवरेज विश्लेषण यह जांचने के लिए कि स्क्रिप्ट की कौन सी लाइनें कहाँ निष्पादित हुई हैं
  • सभी प्रकार के चर की डंप
  • स्रोत कोड देखने के लिए कोड हाइलाइटर के साथ फाइल इंस्पेक्टर
  • अजाक्स स्क्रिप्ट के लिए जावास्क्रिप्ट कंसोल (केवल क्रोम) पर संदेश भेजें

यहां छवि विवरण दर्ज करें


नमस्ते। क्या कोई नवीनतम कांटा या समान उपकरण आज तक अधिक है और वर्तमान में बनाए रखा गया है?
मेटाफैनियल

मैंने इसे कोड नहीं किया, इसलिए नवीनतम कांटा के लिए, मुझे लगता है कि सिर्फ गिटहब जाना है? विकल्पों के लिए, softwarerecs.stackexchange.com पर पूछें और हम आपकी मदद करेंगे।
मावग का कहना है कि मोनिका

1
@ माघी, धन्यवाद। मैंने पूछा क्योंकि फ़ेपटोलकेस जीथब और वहाँ सूचीबद्ध कांटे 5 वर्षों में अपडेट नहीं किए गए हैं। अन्य StackExchange साइट के लिए धन्यवाद। मुझे सिर्फ क्लॉकवर्क मिला । मुझे आश्चर्य है कि क्या यह समान या बेहतर है ...
मेटाफैनियल

और धन्यवाद आप Clockwork के लिए। यह बहुत अच्छा लग रहा है (बस अफ़सोस की बात है कि मैं उन रूपरेखाओं में से किसी का भी उपयोग नहीं करता हूं (मुझे आश्चर्य है कि अगर यह कैसे डेटाबेस के प्रश्नों को डंप कर सकता है - फ्रेम को हुक करके)। अच्छी तरह से जांच के लायक है। (+1)
मावग का कहना है कि मोनिका

2

2017 तक, Firebug और इसलिए FirePHP को अक्षम कर दिया गया है

मैंने कंसोल के माध्यम से डीबगिंग के लिए FirePHP से Firebug तक निर्बाध प्रवास की अनुमति देने के लिए ChromePHP टूल में कुछ छोटे संशोधन लिखे।

यह लेख स्पष्ट आसान चरणों में बताता है

5 मिनट में (मौजूदा कोड को तोड़े बिना) FirePHP से ChromePHP पर माइग्रेट करें


2

Ajax कॉल या XML / JSON प्रतिक्रियाओं के लिए, जहां आप शरीर के साथ गड़बड़ नहीं करना चाहते हैं, आपको HTTP हेडर के माध्यम से लॉग भेजने की आवश्यकता है, फिर उन्हें वेब एक्सटेंशन के साथ कंसोल में जोड़ें। यह है कि फ़ायरफ़ॉक्स (अब उपलब्ध नहीं) और क्वांटमपीईपी (क्रोमपीएचपी का एक कांटा) फ़ायरफ़ॉक्स में ऐसा करता है।

यदि आपके पास धैर्य है, तो एक्स-डीबग एक बेहतर विकल्प है - आपको पीएचपी में गहरी अंतर्दृष्टि मिलती है, अपनी स्क्रिप्ट को रोकने की क्षमता के साथ, देखें कि क्या चल रहा है, फिर स्क्रिप्ट को फिर से शुरू करें।



2

मुझे किसी पार्टी के लिए देर हो सकती है, लेकिन मैं लॉगिंग फ़ंक्शन के कार्यान्वयन की तलाश कर रहा था जो:

  • जावास्क्रिप्ट की तरह अल्पविराम से अलग तर्कों की एक चर संख्या लेता है console.log(),
  • स्वरूपित आउटपुट देता है (न कि केवल क्रमबद्ध स्ट्रिंग),
  • एक सामान्य जावास्क्रिप्ट से अलग है console.log()

तो उत्पादन ऐसा दिखता है:

यहां छवि विवरण दर्ज करें

(नीचे दिए गए स्निपेट का परीक्षण php पर किया गया है 7.2.11। मुझे इसकी php पिछड़ी संगतता के बारे में निश्चित नहीं है। यह जावास्क्रिप्ट के साथ-साथ (पुराने ब्राउज़रों के एक शब्द में) के लिए एक मुद्दा हो सकता है, क्योंकि यह console.log()तर्कों के बाद एक अनुगामी अल्पविराम का निर्माण करता है - जो नहीं है तक कानूनी ES 2017)

<?php

function console_log(...$args)
{
    $args_as_json = array_map(function ($item) {
        return json_encode($item);
    }, $args);

    $js_code = "<script>console.log('%c 💬 log from PHP: ','background: #474A8A; color: #B0B3D6; line-height: 2',";
    foreach ($args_as_json as $arg) {
        $js_code .= "{$arg},";
    }
    $js_code .= ")</script>";

    echo $js_code;
}

$list = ['foo', 'bar'];
$obj = new stdClass();
$obj->first_name = 'John';
$obj->last_name = 'Johnson';

echo console_log($list, 'Hello World', 123, $obj);

?>

इस स्निपेट ने मुझे बचा लिया। :) मुझे वास्तविक सर्वर तक पहुंच के बिना उत्पादन कोड में कुछ बदलाव करने की आवश्यकता थी, और यह इसके चारों ओर प्राप्त करने के लिए एकदम सही था। धन्यवाद!
राफेल एलेक्सीओ

मुझे खुशी है कि मैं मदद करने में सक्षम था।
हायनेक

1

इन दोनों में से कोई भी काम कर रहा है:

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

1

यहाँ मेरा समाधान है, इस बारे में एक अच्छी बात यह है कि आप जितने चाहें उतने पाराम पास कर सकते हैं।

function console_log()
{
    $js_code = 'console.log(' . json_encode(func_get_args(), JSON_HEX_TAG) .
        ');';
    $js_code = '<script>' . $js_code . '</script>';
    echo $js_code;
}

इस तरह बुलाओ

console_log('DEBUG>>', 'Param 1', 'Param 2');
console_log('Console DEBUG:', $someRealVar1, $someVar, $someArray, $someObj);

अब आपको अपने कंसोल, खुश कोडिंग में आउटपुट देखने में सक्षम होना चाहिए :)


0

उपयोग:

function console_log($data) {
    $bt = debug_backtrace();
    $caller = array_shift($bt);

    if (is_array($data))
        $dataPart = implode(',', $data);
    else
        $dataPart = $data;

    $toSplit = $caller['file'])) . ':' .
               $caller['line'] . ' => ' . $dataPart

    error_log(end(split('/', $toSplit));
}

1
आपको अपने विचार और समाधान के बारे में एक संकेत जोड़ना चाहिए। साथ ही स्रोत का अप्रयुक्त स्रोत है।
०४ तक

0

यहाँ एक आसान कार्य है। यह उपयोग करने के लिए सुपर सरल है, आपको जितने चाहें उतने तर्क पारित करने की अनुमति देता है, किसी भी प्रकार का, और ब्राउज़र कंसोल विंडो में ऑब्जेक्ट सामग्री को प्रदर्शित करेगा जैसे कि आपने जावास्क्रिप्ट से कंसोल कहा था - लेकिन 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 फ़ंक्शन हैं, और इस फ़ंक्शन को एक फ़ंक्शन कॉल से असीम रूप से कई कंसोल.लॉग अनुरोध करने की अनुमति देते हैं।


0

हालांकि यह एक पुराना सवाल है, मैं इसके लिए देख रहा हूं। यहाँ दिए गए कुछ समाधानों का मेरा संकलन यहाँ दिया गया है और कुछ अन्य विचारों को एक आकार-फिट-सभी समाधान प्राप्त करने के लिए कहीं और मिला है।

कोड:

    // Post to browser console
    function console($data, $is_error = false, $file = false, $ln = false) {
        if(!function_exists('console_wer')) {
            function console_wer($data, $is_error = false, $bctr, $file, $ln) {
                echo '<div display="none">'.'<script type="text/javascript">'.(($is_error!==false) ? 'if(typeof phperr_to_cns === \'undefined\') { var phperr_to_cns = 1; document.addEventListener("DOMContentLoaded", function() { setTimeout(function(){ alert("Alert. see console."); }, 4000); });  }' : '').' console.group("PHP '.(($is_error) ? 'error' : 'log').' from "+window.atob("'.base64_encode((($file===false) ? $bctr['file'] : $file)).'")'.((($ln!==false && $file!==false) || $bctr!==false) ? '+" on line '.(($ln===false) ? $bctr['line'] : $ln).' :"' : '+" :"').'); console.'.(($is_error) ? 'error' : 'log').'('.((is_array($data)) ? 'JSON.parse(window.atob("'.base64_encode(json_encode($data)).'"))' : '"'.$data.'"').'); console.groupEnd();</script></div>'; return true;
            }
        }
        return @console_wer($data, $is_error, (($file===false && $ln===false) ? array_shift(debug_backtrace()) : false), $file, $ln);
    }

    //PHP Exceptions handler
    function exceptions_to_console($svr, $str, $file, $ln) {
        if(!function_exists('severity_tag')) {
            function severity_tag($svr) {
                $names = [];
                $consts = array_flip(array_slice(get_defined_constants(true)['Core'], 0, 15, true));
                foreach ($consts as $code => $name) {
                    if ($svr & $code) $names []= $name;
                }
                return join(' | ', $names);
            }
        }
        if (error_reporting() == 0) {
            return false;
        }
        if(error_reporting() & $svr) {
            console(severity_tag($svr).' : '.$str, true, $file, $ln);
        }
    }

    // Divert php error traffic
    error_reporting(E_ALL);  
    ini_set("display_errors", 1);
    set_error_handler('exceptions_to_console');

TESTS और उपयोग:

उपयोग सरल है। मैन्युअल रूप से कंसोल पर पोस्ट करने के लिए पहला फ़ंक्शन शामिल करें। Php अपवाद से निपटने के लिए दूसरे फ़ंक्शन का उपयोग करें। निम्नलिखित परीक्षण एक विचार देना चाहिए।

    // Test 1 - Auto - Handle php error and report error with severity info
    $a[1] = 'jfksjfks';
    try {
          $b = $a[0];
    } catch (Exception $e) {
          echo "jsdlkjflsjfkjl";
    }

    // Test 2 - Manual - Without explicitly providing file name and line no.
          console(array(1 => "Hi", array("hellow")), false);

    // Test 3 - Manual - Explicitly providing file name and line no.
          console(array(1 => "Error", array($some_result)), true, 'my file', 2);

    // Test 4 - Manual - Explicitly providing file name only.
          console(array(1 => "Error", array($some_result)), true, 'my file');

शोषण:

  • फ़ंक्शन console($data, $is_error, $file, $fn)पहले तर्क के रूप में स्ट्रिंग या सरणी लेता है और इसे js आवेषण का उपयोग करके कंसोल पर पोस्ट करता है।

  • दूसरा तर्क त्रुटियों के खिलाफ सामान्य लॉग को अलग करने के लिए एक झंडा है। त्रुटियों के लिए, हम ईवेंट श्रोताओं को अलर्ट के माध्यम से हमें सूचित करने के लिए जोड़ रहे हैं यदि कोई त्रुटि हुई थी, तो कंसोल में भी हाइलाइटिंग। यह ध्वज असत्य पर डिफ़ॉल्ट है।

  • तीसरा और चौथा तर्क फ़ाइल और लाइन नंबर की स्पष्ट घोषणाएं हैं, जो वैकल्पिक है। यदि अनुपस्थित हैं, तो वे debug_backtrace()हमारे लिए उन्हें लाने के लिए पूर्वनिर्धारित php फ़ंक्शन का उपयोग करने में चूक गए हैं।

  • अगले फ़ंक्शन exceptions_to_console($svr, $str, $file, $ln)में php डिफ़ॉल्ट अपवाद हैंडलर द्वारा आदेश में चार तर्क हैं। यहां, पहला तर्क गंभीरता है, जिसे हम severity_tag($code)त्रुटि पर अधिक जानकारी प्रदान करने के लिए फ़ंक्शन का उपयोग करते हुए पूर्वनिर्धारित स्थिरांक के साथ आगे बढ़ते हैं ।

सूचना:

  • उपरोक्त कोड JS फ़ंक्शन और विधियों का उपयोग करता है जो पुराने ब्राउज़र में उपलब्ध नहीं हैं। पुराने संस्करणों के साथ संगतता के लिए, इसे प्रतिस्थापन की आवश्यकता है।

  • उपरोक्त कोड वातावरणों के परीक्षण के लिए है, जहाँ आप अकेले ही साइट पर पहुँच सकते हैं। इसका उपयोग लाइव (उत्पादन) वेबसाइटों में न करें।

सुझाव:

  • पहले फ़ंक्शन console()ने कुछ नोटिस फेंक दिए, इसलिए मैंने उन्हें दूसरे फ़ंक्शन के भीतर लपेट दिया है और इसे त्रुटि नियंत्रण ऑपरेटर '@' का उपयोग करके बुलाया है। यदि आपको नोटिस से कोई आपत्ति नहीं है तो इससे बचा जा सकता है।

  • अंतिम लेकिन कम से कम, अलर्ट न करने वाले अलर्ट कोडिंग करते समय परेशान हो सकते हैं। इसके लिए मैं पॉपअप अलर्ट के बजाय इस बीप (समाधान में पाया गया: https://stackoverflow.com/a/23395136/6060602 ) का उपयोग कर रहा हूं । यह बहुत अच्छा है और संभावनाएं अनंत हैं, आप अपनी पसंदीदा धुनें बजा सकते हैं और कम तनावपूर्ण कोडिंग कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.