2009-03-07 14 views
6

मैं चीजों को निम्न PHP चेतावनी ट्रिगर हो सकता है के लिए देख रहा हूँ:पीएचपी चेतावनी: हेडर पहले से ही में भेजा अज्ञात

पीएचपी चेतावनी: संशोधित नहीं कर सकते हैडर जानकारी - पहले से ही लाइन 0

पर अज्ञात में भेजा हेडर

उत्तर

6

पता चला कि यह लाइन

ob_start("ob_gzhandler"); 

कि चेतावनी का कारण बना था के बाद सब कुछ मिटाने के लिए सुनिश्चित करें कि बनाना है। यह 2001 में रिपोर्ट और तय किया गया है, ऐसा लगता है, लेकिन किसी कारण से यह वापस आ रहा है।

+1

अच्छा समाधान आपके समाधान को ढूंढ रहा है! आप अपना उत्तर सही के रूप में चुन सकते हैं ताकि इसे अन्य उत्तरों के शीर्ष पर देखा जा सके। आप कुछ और विवरण जोड़ने के लिए इसे संपादित भी कर सकते हैं ताकि यह किसी और की मदद कर सके। – lpfavreau

+0

अपने स्वयं के उत्तरों को स्वीकार करने पर 48 घंटे की समय सीमा है। विवरण के लिए, मैं जोड़ने के लिए और कुछ भी नहीं सोच सकता। –

+0

ठीक है, मैं शायद "2001 में रिपोर्ट और तय" पर अधिक जानकारी के बारे में सोच रहा था। किसके द्वारा? PHP समुदाय द्वारा? क्या आपके पास बग रिपोर्ट का लिंक है? या आप या आपकी टीम द्वारा कुछ आंतरिक बग? इसे कहां कहा जाता था? आपकी सभी स्क्रिप्ट की शुरुआत में? एक शामिल में? एक ज्ञात पुस्तकालय में? यह मदद कर सकता है। :-) – lpfavreau

2

मुझे लगता है कि क्या हो रहा है php कार्यों में से एक है कुछ आउटपुट कर रहा है। मैंने इसे कुछ IMAP फ़ंक्शंस के साथ देखा है, जहां उन्होंने केवल एक "" स्पेस कैरेक्टर रखा है और यह चीजों को खराब करता है। आप Xdebug या Zend डीबगर का उपयोग करके इसे ट्रैक कर सकते हैं, लेकिन मैं आपके पास न तो कुछ फ़ंक्शंस के आसपास आउटपुट बफरिंग को लपेटने का प्रयास करता हूं जो आपको लगता है कि ऐसा हो सकता है।

ob_start(); 
callYourFunction(); 
ob_end_clean(); 

एक समय में यह एक समारोह करो और जब त्रुटि चली जाती है आपको पता चल जाएगा जो समारोह आप कारण समस्या है, तो आप एक बग रिपोर्ट फ़ाइल सकते हैं या यह एक हैक के रूप में में छोड़ दें। लेकिन कम से कम तब आप जानते हैं कि इस मुद्दे का क्या कारण है।

संपादित करें: तथ्य यह है कि आपका आउटपुट लाइन 0 पर होने वाला है, इसका मतलब है कि यह एक सी स्तर का काम आउटपुट कर रहा है, PHP का उपयोग करके लिखा गया कोई भी कोड नहीं।

1

क्या आपने अनपेक्षित के लिए अपनी फ़ाइलों की जांच की है?

+0

यह मेरी समस्या थी। अब नोटपैड ++ "एन्कोडिंग-> बीओएम के बिना यूटीएफ -8 में कनवर्ट करें" सुविधा –

3

यह बहुत सी चीजें हो सकती है, लेकिन जैसा कि अन्य ने कहा है, यह अक्सर कहीं भी एक जगह है जो आउटपुट हो जाती है और फिर header() कमांड भेजा जाता है जो सामान्य रूप से ठीक है, लेकिन सामग्री वापस भेजने के बाद नहीं (संभावित रूप से इस मामले में बस एक जगह)।

ob_start() का उपयोग आउटपुट को तुरंत बफर करके बाहर जाने से रोकता है। तो यह एक संभावित समाधान है, या यह कम से कम तरीका है कि यह zodeus said से कहां से आ रहा है।


एक आम बात यह है कि उन खोने वाले रिक्त स्थान इस परिदृश्य में हैं।

global.php

<?php 
    $variable = 1; 
    $database = 'something else'; 
?> <-- A space here 
<-- Or here 

index.php

<?php 

    require('global.php'); 
    $var = dosomething(); 
    header('Location: http://www.example.com/'); 

?> 

एक तरीका यह है कि ठीक करने के लिए global.php फ़ाइल के अंत में?> दूर करने के लिए है। आपको उन लोगों की आवश्यकता नहीं है, वे केवल उपयोगी हैं अगर आप अपने PHP कोड के बाद उदाहरण के लिए एचटीएमएल डालना शुरू करते हैं। तो अगर आप चाहते हैं:

<?php 
    $variable = 1; 
    $database = 'something else'; 

और जब आप require() करते हैं, अंतरिक्ष header() से पहले outputted नहीं है।


सामग्री आउटपुट और हेडर के साथ समस्याओं को स्पष्ट करने के लिए बस एक अन्य त्रुटि है जो एक समान त्रुटि देता है। ऐसा तब होता है जब आप header() का उपयोग करके पुनर्निर्देशन के बाद प्रसंस्करण को रोकना भूल जाते हैं।

if ($notLoggedIn) { 
    header('Location: http://www.example.com/login.php'); 
} 
echo 'Welcome to my website'; // this will be outputted, 
           // you should have an exit() 
           // right after the header() 
+0

हमेशा की तरह, डाउनवोट को समझाते हुए एक टिप्पणी की सराहना की जाती है, इसलिए यदि यह गलत है तो मैं समायोजन, सीख या हटा सकता हूं। धन्यवाद। – lpfavreau

0

त्रुटि आपको बताता है कि कुछ, उत्पादन, जो हेडर भेजे जाने के लिए मजबूर होना पड़ा भेजा है क्योंकि हेडर http संदेश के मुख्य भाग से पहले लिखी होनी चाहिए।

मुझे मिली सबसे आम समस्या हैडर में टेक्स्ट है। विज़:

<?php // myfile.php 
    include 'header.php'; 
?> 

और header.php में:

<?php // header.php 
    .... 
?> 

क्या तुम यहाँ नहीं देख सकते हैं एक खाली है कि वहाँ है - या तो एक अंतरिक्ष या समापन '?>' के बाद सीआर/वामो। यह आउटपुट है क्योंकि PHP मानक कहता है कि PHP टैग के बाहर कुछ भी HTML के रूप में आउटपुट है।

समाधान सुनिश्चित करें कि आप बंद करने '?>'

+0

एक PHP _standard_ है ??!? – Alnitak

संबंधित मुद्दे

 संबंधित मुद्दे