2010-08-29 17 views
19

खोल पर, अपने सर्वर समय (बैश में सरल date) है: सूर्य अगस्त 29 10:37:12 EDT 2010प्राप्त सर्वर समय - समय क्षेत्र के मुद्दों

जब मैं कोड php -r "echo date('Y-m-d H:i:s');" चलाने मैं: 2010 -08-29 10:37:10

लेकिन जब मैं एक PHP स्क्रिप्ट निष्पादित करता हूं जिसमें echo date('Y-m-d H:i:s'); है तो मुझे एक अलग समय मिलता है- क्योंकि php सोचता है कि टाइमज़ोन यूटीसी (सर्वर समय ईडीटी है)।

मेरी php.ini फ़ाइल में कोई टाइमज़ोन सेट नहीं है, और मैं कुछ भी बदलना नहीं चाहूंगा- क्योंकि मुझे नहीं पता कि इस सर्वर पर चलने वाली अन्य साइटों पर इसका क्या असर होगा।

क्या सर्वर समय प्राप्त करने का एक आसान तरीका है- सर्वर के लिए निर्धारित टाइमज़ोन पर?

उत्तर

14

php.ini directives मैनुअल पेज के अनुसार, यदि आप 5.3 से पहले संस्करण का उपयोग कर रहे हैं तो टाइमज़ोन डिफ़ॉल्ट रूप से सेट नहीं है। तो अगर आप date_default_timezone_get के लिए पेज पर एक नज़र डालें, तो यह समय क्षेत्र प्राप्त करने के लिए निम्न क्रम का उपयोग करता है:

* Reading the timezone set using the date_default_timezone_set() function (if any) 
* Reading the TZ environment variable (if non empty) (Prior to PHP 5.3.0) 
* Reading the value of the date.timezone ini option (if set) 
* Querying the host operating system (if supported and allowed by the OS) 

यूटीसी, अगर उन सभी असफल डिफ़ॉल्ट है ताकि शायद एक अच्छा प्रारंभिक बिंदु है।

2

सर्वर हमेशाphp.ini फ़ाइल में निर्दिष्ट एक टाइमज़ोन होना चाहिए। PHP 5.3 भी नोटिस उठाता है यदि यह मामला नहीं है और DateTime एक्सटेंशन अपवाद फेंक देगा यदि आप समय-समय पर स्पष्ट रूप से निर्दिष्ट किए बिना ऑब्जेक्ट्स बनाने का प्रयास करते हैं (DateTimezone ऑब्जेक्ट के साथ) या डिफ़ॉल्ट एक (या तो date.timezone या date_default_timezone_set के माध्यम से)।

तुम क्या वर्णन कर रहे हैं करके, सबसे अधिक संभावना परिदृश्य हैं:

  • अलग php.ini फ़ाइलों दो स्थितियों में इस्तेमाल किया जा रहा है। पहले मामले में, कोई डिफ़ॉल्ट टाइमज़ोन निर्दिष्ट नहीं है, इसलिए PHP मशीन के सिस्टम-व्यापी टाइमज़ोन से किसी को अनुमान लगाने का प्रयास करता है।
  • (द्वितीय) स्क्रिप्ट date_default_timezone_set('UTC') या समकक्ष कॉल करता है।
2
पार्टी के लिए

देर उपयोग करने की कोशिश है, लेकिन आप संपादित php.ini बिना समय क्षेत्र सेट करना चाहते हैं, आप php कोड में डाल सकते हैं इन तारों में से:

date_default_timezone_set('GMT'); 
date_default_timezone_set('Europe/Zurich'); 
date_default_timezone_set('America/New_York'); 
संबंधित मुद्दे