"तिथि (): यह सिस्टम की समय-सीमा सेटिंग्स पर भरोसा करने के लिए सुरक्षित नहीं है ..."


359

सर्वर पर 5.2.17 से PHP 5.3.21 तक PHP संस्करण को अपडेट करने का अनुरोध करने पर मुझे यह त्रुटि मिली ।

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EDT/-4.0/DST' instead</p>
<p>Filename: libraries/Log.php</p>
<p>Line Number: 86</p>

</div>
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EDT/-4.0/DST' instead in /filelocation right here/system/libraries/Log.php on line 86

Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EDT/-4.0/DST' instead in /filelocation right here/system/libraries/Log.php on line 99
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EDT/-4.0/DST' instead</p>
<p>Filename: libraries/Log.php</p>
<p>Line Number: 99</p>

</div>

जवाबों:


556

आपको संभवतः अपनी php.iniफ़ाइल में कॉन्फ़िगरेशन लाइन में टाइमज़ोन डालने की आवश्यकता है । आपकी php.ini फ़ाइल में इस तरह का एक ब्लॉक होना चाहिए:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = America/New_York

यदि नहीं, तो इसे जोड़ें (आपके द्वारा टाइमज़ोन की जगह)। कॉन्फ़िगर करने के बाद, httpd ( service httpd restart) को पुनरारंभ करना सुनिश्चित करें ।

यहाँ समर्थित टाइमज़ोन की सूची दी गई है ।


12
स्पष्ट होने के लिए, इस परिवर्तन को करने के बाद, sudo सेवा को अपाचे 2 पुनः आरंभ करना सुनिश्चित करें
Ryan

2
यह मेरे लिए इसे हल कर दिया जब अन्य समाधान नहीं किया। मुझे यह त्रुटि तब मिली जब मैंने अमेज़ॅन SES के साथ एकीकरण के रूप में एक ही पृष्ठ पर दिनांक फ़ंक्शन का उपयोग किया। शायद वह किसी और की मदद करेगा।
मास्टर_ग्रेसि

9
यदि आप अपने क्लाइंट टर्मिनल के भीतर PHP CLI (php -r या php -a) का उपयोग कर रहे हैं, तो आपको apache2 नहीं, CLI php.ini फ़ाइल को संपादित करने की आवश्यकता है। YourC CLI php.ini फाइल आमतौर पर /etc/php5/cli/php.ini
justinpage

2
Apache के बारे में पहली टिप्पणी की तरह आपको Windows / IIS पर प्रभावी होने के लिए IIS को भी पुनरारंभ करना होगा।
jross

2
इससे मेरी समस्या हल हो गई! php.iniअपाचे द्वारा उपयोग किए जाने के लिए मेरे जैसे गैर-विशेषज्ञों के लिए बस एक जानकारी , बस निम्नलिखित कमांड को निष्पादित करें php -i | grep php.ini
जोएल सलामीन

198

यदि आप अपने php.ini कॉन्फ़िगरेशन को संशोधित नहीं कर सकते हैं, तो आप अपने कोड की शुरुआत में निम्नलिखित स्निपेट का उपयोग कर सकते हैं:

date_default_timezone_set('Africa/Lagos');//or change to whatever timezone you want

टाइमज़ोन की सूची http://www.php.net/manual/en/timezones.php पर देखी जा सकती है ।


7
किसी कारण से date.timezone = अमेरिका / New_York को मेरी php.ini में सेट करना और रीस्टार्ट अपाचे ने स्विफ्टमेलर का उपयोग करके स्क्रिप्ट चलाते समय इस त्रुटि संदेश को नहीं रोका। मैंने डेट_डफ़ॉल्ट_टाइमज़ोन_सेट ('अमेरिका / न्यू_यॉर्क') को भी जोड़ा; सुझाव के अनुसार स्क्रिप्ट के शीर्ष पर। धन्यवाद!
काइल

मैंने आपके समाधान की कोशिश की। अब, त्रुटि 500 ​​आंतरिक सर्वर त्रुटि है। मैं Apache 2.x और codeigniter का उपयोग कर रहा हूँ।
हाफिज शहबाज अली

@ShehbazAli आपने कुछ गलत किया होगा। आपकी किस स्क्रिप्ट में आपके स्निपेट को जोड़ा गया था?
बाबटुंडे अद्यामी

एक ही कोड उत्पादन पर काम कर रहा है। कोई त्रुटि नहीं है। मैंने विंडो 10 पर मैन्युअल रूप से Apache, php और MySQL को स्थापित किया है। PHP, MySQL और Apache काम। लेकिन, यह परियोजना त्रुटि दे रही है।
हाफिज शहबाज अली

72

अपनी index.phpफ़ाइल में निम्नलिखित जोड़ें । मैं पहली बार इस पार आया था, जब मैंने अपने XAMPP सर्वर से Apache 2.2 और PHP 5.4 में अपना एप्लिकेशन स्थानांतरित किया था ...

मैं आपको सलाह दूंगा कि आप इसे index.phpफ़ाइल के बजाय अपनी फ़ाइल में करें php.ini

if( ! ini_get('date.timezone') )
{
    date_default_timezone_set('GMT');
}

3
उत्कृष्ट समाधान के लिए जब आपके पास आवश्यक रूप से पूर्ण सिस्टम एक्सेस नहीं है, तो अनुमान करें कि यह एक सीमित पहुंच वाले लोगों के लिए है या अधिक मजबूत समाधान की आवश्यकता है, और यदि आप कर सकते हैं तो इसे php.ini के संपादन के साथ संयोजन करें
aqm

18
<? print(gmdate("Y")); ?> 

के बजाय

<? print(date("Y")); ?>

मेरे लिए काम किया (वर्तमान वर्ष दिखाता है और कोई और त्रुटि संदेश नहीं दिखाता है)। (ऊपर क्रिस के लिए धन्यवाद)


15

यदि ये आपके विकल्प नहीं हैं

  • संशोधन करना php.ini
  • date_default_timezoneकॉल जोड़ना ।

इसके बजाय dateआप उपयोग कर सकते हैं gmdate

gmdate( "Y" )जब मैंने कॉपीराइट स्निपलेट के लिए एक वर्ष की आवश्यकता होती है, तो मैंने उपयोग किया है ।


14

यदि आप CodeIgniter का उपयोग कर रहे हैं और php.ini को नहीं बदल सकते हैं, तो मैंने index.php की शुरुआत में निम्नलिखित को जोड़ा:

date_default_timezone_set('GMT');

यह मेरे लिए काम करता है, आपकी मदद के लिए धन्यवाद जोस। सादर, सरीम गनी i-splendid.com
सरीम शेखानी

यह देशी php php.net/manual/en/function.date-default-timezone-set.php पर काम करता है । टीआई, आपने मुझे सही रास्ते पर डाल दिया। संबंध में समारोह के लिए टाइमजोन
लुई लाउडॉग ट्रॉटिएर


11

@ जस्टिस ने मुझे सही दिशा की ओर इशारा किया, लेकिन उनका कोड मेरे काम नहीं आया। यह किया:

// set the default timezone if not set at php.ini
if (!date_default_timezone_get('date.timezone')) {
    // insert here the default timezone
    date_default_timezone_set('America/New_York');
}

प्रलेखन: http://www.php.net/manual/en/function.date-default-timezone-get.php

यह समाधान केवल उन लोगों के लिए नहीं है जिनके पास पूर्ण सिस्टम एक्सेस नहीं है। यह किसी भी स्क्रिप्ट के लिए आवश्यक है जब आप इसे किसी और को प्रदान करते हैं लेकिन आप। जब आप इसे किसी और को वितरित करते हैं, तो आप कभी नहीं जानते कि स्क्रिप्ट किस सर्वर पर चलेगी।


5

यह समस्या मुझे कुछ समय के लिए परेशान कर रही है क्योंकि संगीतकार में "createbucket.php" स्क्रिप्ट को इंजेक्ट करने की कोशिश कर रहा हूं और मुझे बताया जा रहा है कि मेरा समय-क्षेत्र गलत है।

अंत में केवल एक चीज जो इस मुद्दे को तय करती थी: $ sudo nano /etc/php.ini

समयक्षेत्र की खोज करें

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = UTC

सुनिश्चित करें कि आप हटा दें ;

फिर अंत में

$ sudo service httpd restart

और आप जाने के लिए अच्छा होगा :)


5

मुझे इसे दोहरे उद्धरणों में रखना था।

date_default_timezone_set("America/Los_Angeles"); // default time zone

अभी भी कोई काम नहीं करता है (मैक ओएसएक्स में), इसलिए मैं अंततः टूट गया और जोड़ा गया/etc/php.ini: date.timezone = America/Los_Angeles
मार्कहु

3

आप अपनी .htaccessफ़ाइल में टाइमज़ोन सेट कर सकते हैं

php_value date.timezone UTC

इस मामले में काम करना चाहिए php.ini अभी भी सेट होने के बावजूद चेतावनी लौटाता है (php 5.4। *)। मेरे लिए काम किया।
क्रिश्चियन बोनटो

2

Date.timezone सेट करने के अलावा = जैसा कि कई उत्तरों में बताया गया है, मुझे php.ini फ़ाइल में एक त्रुटि मिली जो इसे date.timezone पर प्राप्त करने से रोक रही थी। जिस तरह से मैंने पाया कि वह टर्मिनल में कमांड लाइन से php चला रहा था। इससे लाइन 114 पर रिपोर्ट करने में एक त्रुटि हुई। मेरे मामले में मैंने त्रुटियों को प्रदर्शित करने के लिए एक सेटिंग को अक्षम कर दिया था जो '' था। 2 मानों के बीच। यह पसंद नहीं आया। मैंने मूल्यों में से एक को हटा दिया और | और उसके बाद सब कुछ अच्छा था


1

दो समय क्षेत्र के लिए एक सरल विधि।

<?php 
$date = new DateTime("2012-07-05 16:43:21", new DateTimeZone('Europe/Paris')); 

date_default_timezone_set('America/New_York'); 

echo date("Y-m-d h:iA", $date->format('U')); 

// 2012-07-05 10:43AM 
?>


0

आपकी असंगतताओं को ठीक करते हुए एक त्वरित समाधान, आपकी index.phpफ़ाइल में त्रुटि रिपोर्टिंग को अक्षम करना है:

नीचे की लाइन अपने में डालें index.php में डालेंdefine( ‘_JEXEC’, 1 );

error_reporting( E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR |
E_COMPILE_WARNING );

0

मैं हमारे EC2 और S3 बाल्टी को हम-पश्चिम -2 (ओरेगन) क्षेत्र में होस्ट कर रहा हूं। जब मैं बुला रहा था$s3client->listBuckets() अपने php में मौजूदा बाल्टियों को सूचीबद्ध करने के लिए कर रहा था, तो मुझे अपवाद मिल रहा था - "Uncaught exception 'Exception' with message 'DateTime::__construct(): It is not safe to rely on the system's timezone settings...". मैंने इसे काम करने के लिए नीचे बदलाव किए। यदि किसी को इसी तरह के मुद्दे का सामना करना पड़ रहा है और इन उत्तरों में से किसी ने भी मदद नहीं की है तो इन विवरणों को साझा करना।

  1. प्रलेखन के आधार पर @ AWS कॉन्फ़िगरिंग नेटवर्क टाइम प्रोटोकॉल (NTP) के , मैंने पुष्टि की कि ntpd सेवा की स्थिति ntpstatकमांड चलाने से ठीक है । यदि आपको त्रुटि मिलती है, तो यह लिंक आपको यह जानने में मदद करता है कि क्या गलत हो रहा है।
  2. /Etc/php.ini फ़ाइल खोली गई (कुछ में इसे अलग-अलग पथ में स्थापित किया जा सकता है जो php के संस्करण पर आधारित है) और पाया गया कि date.timezone गया यह किसी भी मूल्य पर सेट नहीं था और यह भी डिफ़ॉल्ट रूप से टिप्पणी की गई थी। मैंने 'हटाकर टिप्पणी की;' इस लाइन से पहले "UTC"और फ़ाइल को सहेजने के लिए इसका मान सेट करें ।
  3. Http और ntp डेमॉन का उपयोग करके पुनः आरंभ किया गया sudo service httpd restart और sudo service ntpd restartकमांड को पुनः ।

इसके बाद मैं बिना किसी अपवाद के सफलतापूर्वक बाल्टी को सूचीबद्ध करने में सक्षम हूं। उम्मीद है की यह मदद करेगा।


0

यदि आप Plesk का उपयोग कर रहे हैं, तो इसे आज़माएं, पृष्ठ के निचले भाग पर सबसे पहले, PHP सेटिंग्स खोलें, DEFAULT से UTC में दिनांक.timezone बदलें।

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

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


0

मैं एक chroot जेल में php-fpm चलाने में यह त्रुटि थी। मैंने chroot निर्देशिका में etc / php.ini और / usr / share / zoneinfo बनाने की कोशिश की, लेकिन यह सिर्फ काम नहीं किया। मैंने भी php-fpm डेमॉन को स्ट्रेस-इन करने की कोशिश की, यह देखने के लिए कि वे कौन सी फाइल गायब थी - कुछ भी नहीं निकला।

इसलिए यदि Google आपको यहां लाता है क्योंकि चेरोट के लिए कॉन्फ़िगर किए गए php-fpm का उपयोग करते समय आपको यह त्रुटि मिलती है, तो आप संभवतः इस लाइन को /etc/php-fpm.d/www.confENV अनुभाग में जोड़कर इसे ठीक कर सकते हैं :

env[TZ] = America/New_York

इसे लागू करने के लिए एक php-fpm पुनः आरंभ की आवश्यकता होती है। आशा है कि यह वहाँ किसी को मदद करता है।


0

मेरे विशेष मामले में, मैंने PHP-PHPM (FastCGI प्रोसेस मैनेजर) का उपयोग करने के लिए कॉन्फ़िगर किया है। phpinfo()सीएलआई से निष्पादित करते समय मैंने सही टाइमज़ोन देखा जो मैंने php.ini में सेट किया था, हालांकि यह ब्राउज़र में अभी भी गलत था और मेरे कोड को विफल कर रहा था। मुझे php-fpmसर्वर पर सेवा को पुनः आरंभ करने की आवश्यकता है ।

service rh-php56-php-fpm restart

httpdयदि आपने संपादन किया है तो आपको सेवा को फिर से शुरू करना पड़ सकता हैphp.ini

service httpd restart

0

CtrlX से ऊपर का यह उत्तर सही उत्तर है, लेकिन यह पूरी तरह से काम नहीं कर सकता है। मैंने इस लाइन को अपनी php.ini फ़ाइल में जोड़ा :

date.timezone = "America/Los_Angeles"

लेकिन इसने मेरी सभी फ़ाइलों के लिए PHP त्रुटि को दूर नहीं किया क्योंकि मेरी कुछ PHP स्क्रिप्ट सबफ़ोल्डर्स में हैं। इसलिए मुझे .htaccess फ़ाइल को सेटअप करने के लिए php.ini को पुनरावर्ती (सबफ़ोल्डर्स में) प्रयोग किया जाना था:

suphp_configpath /home/account_name/public_html

जहाँ account_name आपका cpanel खाता नाम है और public_html वह फ़ोल्डर है जो आपकी php.ini फ़ाइल में है।


0

Docker उपयोगकर्ता के लिए: अपनी परियोजना में एक स्थानीय timezone.ini फ़ाइल बनाएँ, config को docker-compose.yml में सेट करें,

    volumes:
        - "./docker/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini"

timezone.ini

    date.timezone=Australia/Sydney

0

यदि आपके पास फ़ाइल तक पहुंच नहीं है, तो अपने डोमेन या उप की जड़ में php.iniएक .htaccessफ़ाइल बनाएं या संपादित करें और इसे जोड़ें (celel द्वारा उत्पन्न):

<IfModule mime_module>
AddType application/x-httpd-ea-php56 .php .php5 .phtml
</IfModule>

<IfModule php5_module>
php_value date.timezone "America/New_York"
</IfModule>

<IfModule lsapi_module>
php_value date.timezone "America/New_York"
</IfModule>

कृपया इस मामले में पूंजी शब्दों का उपयोग न करने की कोशिश करें जो सामान्य आवरण सम्मेलन व्यक्त कर सकते हैं जो आप कहना चाहते हैं।
शिज़ेन

0

इसके समाधान के लिए दो विकल्प हैं

सबसे पहले, php.ini फ़ाइल में बदलें और डिफ़ॉल्ट टाइमज़ोन डालें

date.timezone = "America/New_York"

एक बार, आपने php.ini में सर्वर को पुनः आरंभ करने के लिए समय क्षेत्र निर्धारित किया है

दूसरे, अपनी जरूरत के आधार पर रन टाइम असाइन ज़ोन बदलें

date_default_timezone_set('America/New_York');

-1

आपके कनेक्शन पृष्ठ में date_default_timezone_set("Africa/Johannesburg");आपके वर्तमान स्थान के आधार पर इस तरह एक कोड डाला जाता है ।

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