Подтвердить что ты не робот

Не удается установить date.timezone В файле php.ini

Я использую php5.5 и получаю эту ошибку всякий раз, когда я использовал функцию даты в PHP:

 Warning: phpinfo(): It is not safe to rely on the system 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 the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /var/www/info.php on line 1

загруженный файл конфигурации находится здесь:

/etc/php5/apache2/php.ini 

поэтому я изменил настройку date.timezone на это:

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

; http://php.net/date.default-latitude
;date.default_latitude = 31.7667

; http://php.net/date.default-longitude
;date.default_longitude = 35.2333

; http://php.net/date.sunrise-zenith
;date.sunrise_zenith = 90.583333

; http://php.net/date.sunset-zenith
;date.sunset_zenith = 90.583333

Затем я перезапускаю сервер:

sudo /etc/init.d/apache2 restart

но все еще получая эту ошибку, я попытался проверить файл .ini в папке "Дополнительные файлы ini", но ни одна из них не переопределяет параметр date.timezone

Я проверял разрешение файла php.ini, но все еще не работал пожалуйста, помогите мне решить эту проблему, спасибо..

4b9b3361

Ответ 1

наконец решил мою проблему, это мой загруженный файл конфигурации:

/etc/php5/apache2/php.ini 

изменил дату .timezone здесь, но он не работает.

Итак, я проверяю значение "Сканировать этот каталог для дополнительных файлов .ini" в phpinfo(), которые указывают на:

/etc/php5/apache2/conf.d 

то я ищу date.timezone из всех файлов в этой папке, но не нашел.

это мой дополнительный .ini файл, обработанный значением в phpinfo():

/etc/php5/apache2/conf.d/05-opcache.ini, /etc/php5/apache2/conf.d/10-pdo.ini, /etc/php5/apache2/conf.d/20-json.ini, /etc/php5/apache2/conf.d/20-mysql.ini, /etc/php5/apache2/conf.d/20-mysqli.ini, /etc/php5/apache2/conf.d/20-pdo_mysql.ini, /etc/php5/apache2/conf.d/20-xdebug.ini, /etc/php5/apache2/conf.d/30-mcrypt.ini 

Я изменил /etc/php 5/apache2/conf.d/20-xdebug.ini и добавил следующую строку:

date.timezone = Asia/Jakarta

очень странно, но это решило мою проблему!!!

Ответ 2

Попробуйте следующее:

date.timezone = "Asia/Jakarta"

Edit:

Позвольте найти правильный php.ini. Огоньте это в apache/nginx/независимо от того, что вы используете для веб-сервера (потому что версия командной строки может отличаться от используемой им).

<?php
phpinfo();
?>

Что такое .ini в выходе? Все еще то же самое?

Edit2:

После редактирования php.ini просто перезапустите веб-сервер (apache или nginx)...

Ответ 3

Вы должны проверить, найдя php.in, если там где-то есть другой.

для меня. для интерфейса командной строки должен быть CLI:

/etc/php5/cli/php.ini
/etc/php5/fpm/php.ini

измените /etc/php5/cli/php.ini

Теперь это работает для меня.

Ответ 4

Другим решением для меня после компиляции PHP из источника было проверить, действительно ли php.ini загружает файл конфигурации. Из командной строки

php --ini

возвращает

Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File:         (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

Найдите его.

find -name "php.ini" #it was in /usr/local/php/php.ini
cp /usr/local/php/php.ini /usr/local/lib/php.ini

Перезагрузите php (в моем случае, /etc/init.d/php-fpm stop, /etc/init.d/php-fpm start), и он отлично работает. По какой-то причине он был скопирован неправильно.

  • Distro: Centos 7
  • Веб-сервер: Nginx
  • Тип: Экземпляр EC2

Ответ 5

Недавно я столкнулся с той же проблемой с PHP 5.6.4.

  • PHP 5.6.4 ведет себя странно
  • PHP 5.6.11 ведет себя нормально, как ожидалось

Когда я устанавливаю параметр конфигурации date.timezone в разделе [PHP] в файле конфигурации, он отлично работает для PHP 5.6.4. Например, я добавил параметр в самом начале файла php.ini

[PHP]
date.timezone = "Europe/Stockholm"

Но когда я поставлю опцию конфигурации, как это показано в примере в разделе [Date], она не работает должным образом, похоже, что опция игнорируется

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
; this does not work for me for PHP 5.6.4 but works fine for PHP 5.6.11
date.timezone = "Europe/Stockholm"

Когда я добавляю опцию в 20-xdebug.ini, как это предлагается в принятом ответе fooobar.com/questions/292207/..., эта опция принимается, потому что этот файл имеет только [PHP] раздел, Из любопытства я попробовал другие включенные ini файлы, и похоже, что я могу использовать любой.

Еще раз, проблема возникла для меня только с PHP 5.6.4. Когда я изменил параметр на сервере с PHP 5.6.11, он вел себя точно так, как я ожидал.

Ответ 6

Это сработало для меня, когда я заметил, что запись date.timezone в php.ini была закомментирована. После удаления точки с запятой часовой пояс был установлен правильно.

Ответ 7

Проверьте конфликтующие параметры в php.ini, у меня была такая же проблема, и в моем случае параметры xdebug, определенные до даты. timezone, вызывающие эту вещь: Подробнее см. PHP Xdebug issue - date.timezone и session.save_path undefined

Ответ 8

некоторый установщик приложения php для командной строки (например, установщик symfony или даже когда скрипты php запускаются из cli), используйте ini файл внутри каталога php-cli

/etc/php5/cli/php.ini


это решило мою аналогичную проблему в процессе проверки зависимостей при установке Symfony.

Ответ 9

Если вы устанавливаете значение date.timezone в php.ini, но оно не работает (то есть локальное значение и значение мастера различаются), вам может потребоваться обновить что-то вроде этого в файле конфигурации apache:

<IfModule mod_php5.c>
  php_value date.timezone "Europe/Paris"
</IfModule>

Ответ 10

Я исправил это в Mac OSX El Captain, создав структуру папок:/Library/Server/Web/Config/php, а затем создав php.ini внутри этой новой папки php только с директивой date.timezone.

Ответ 11

В моем случае у меня было 2 date.timezone= записей в файле php.ini, а последнее - переопределение первого. удаление одного из них решило мою проблему.

Также не забывайте, что вам необходимо перезапустить процесс веб-сервера.

Ответ 12

Я использую PHP 7.3.6.

  1. открыть xampp/php/php.ini
  2. перейти к линии 1967
  3. установить строку date.timezone=Asia/Jakarta
  4. Перезапустите Apache

enter image description here

Надеюсь ответить на ваш вопрос