2012-04-25 15 views
5

मुझे अभी एक नया कंप्यूटर मिला है, और मैं PHP/MySQL/डेटाबेस आदि स्थापित कर रहा हूं ... मुझे लगता है कि मैं बस वहां के बारे में हूं , इसे छोड़कर यह वक्रबॉल फेंक दिया गया है। मेरी लॉगिन स्क्रिप्ट ठीक काम कर रही थी, लेकिन अब यह निम्नलिखित चेतावनी थूक रही है (जो JSON को गड़बड़ कर देती है)।PHP - दिनांक() बनाम दिनांक। टाइमज़ोन/date_default_timezone_set()

चेतावनी: तिथि() [function.date]: यह प्रणाली के समय क्षेत्र सेटिंग्स पर भरोसा करने के लिए सुरक्षित नहीं है। Date.timezone सेटिंग या date_default_timezone_set() फ़ंक्शन का उपयोग करने के लिए आप आवश्यक हैं। यदि आपने इनमें से किसी भी विधियों का उपयोग किया है और आपको अभी भी यह चेतावनी मिल रही है, तो संभवतः आप टाइमज़ोन पहचानकर्ता को गलत वर्तनी देते हैं। हम चयनित 'अंटार्कटिका/मैक्वेरी' के लिए 'EST/10.0/कोई डीएसटी' में बजाय .../php/login.php लाइन पर

मेरे कोड जाहिर date() उपयोग करता है और है लाइव संस्करण और पुरानी मशीन पर काम करना।

$date = date("ymd"); 

$this_year = date("y"); 

मेरे शोध (here देखें) पता चलता है कि इन कार्यों के व्यवहार php.ini पर निर्भर करता है: मैं कोड की निम्न दो पंक्तियों के लिए दो चेतावनी मिलता है।

तो क्या मुझे नई मशीन पर php.ini बदलना चाहिए, या क्या मैं किसी प्रकार की बहिष्कृत विधि का उपयोग कर रहा हूं, और क्या मुझे date() पूरी तरह से मिटाना चाहिए?

धन्यवाद।

+1

धन्यवाद, सब कुछ। Date_default_timezone_set ('...') का उपयोग करना एक आकर्षण की तरह काम करता है। – Nick

उत्तर

11

यदि आप date_default_timezone_set() का उपयोग करते हैं तो आपको php.ini फ़ाइल को बदलने की आवश्यकता नहीं है। बस इसे समय क्षेत्र में काम कर रहे होंगे करने के लिए सेट

कुछ इस तरह एक कॉन्फ़िग फ़ाइल में या पृष्ठ है जहाँ आप तारीखों के साथ काम कर रहे हैं (यदि यह केवल एक पृष्ठ है) पर जाना चाहिए:।

date_default_timezone_set('America/Los_Angeles'); 
4

यह कोई अपवाद नहीं है, यह एक चेतावनी है जो शायद अब पॉप अप हो रही है क्योंकि नई मशीन पर आपकी त्रुटि रिपोर्टिंग सेटिंग्स पुराने से अलग हैं।

मैं चेतावनी में सुझाव का पालन करने का सुझाव दूंगा, और स्क्रिप्ट में समय-क्षेत्र सेट करने के लिए date_default_timezone_set() का उपयोग करें जहां आपको इसकी आवश्यकता है।

+1

मैंने पोस्ट को अपडेट किया, 'अपवाद' को 'चेतावनी' में बदल दिया :) – Nick

4

सबसे पहले, हालांकि आप जानते हैं, यह समस्या हल करता है।

date_default_timezone_set('Your/Timezone'); 

आप php.ini में कॉन्फ़िगर करने के लिए चाहते हैं, संशोधित

नीचे
[Date] 
; ... 
; ... 
date.timezone = Your/Timezone 
4

आप php.ini को बदलने के लिए नहीं है।

हालांकि, यदि आपके पास टाइमज़ोन है जिसका उपयोग आप अपनी अधिकांश php फ़ाइलों के लिए करेंगे, तो आपकी php.ini में निम्न पंक्ति जोड़ने से चाल चलनी चाहिए।

date.timezone = "Your/Timezone" 

मेरे मामले में मैंने निम्नलिखित पंक्ति php.ini में जोड़ दी। निजी तौर पर, मैं अपने सभी सर्वरों को यूटीसी टाइमज़ोन पर रखना पसंद करता हूं।

date.timezone = "UTC" 
संबंधित मुद्दे