Intereting Posts

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

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

Warning: phpinfo(): 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 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, но все еще не работает, пожалуйста, помогите мне решить эту проблему, спасибо ..

Попробуй это:

 date.timezone = "Asia/Jakarta" 

Редактировать:

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

 <?php phpinfo(); ?> 

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

Edit2:

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

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

 /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/php5/apache2/conf.d/20-xdebug.ini и добавил следующую строку:

 date.timezone = Asia/Jakarta 

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

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

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

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

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

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

Другим решением для меня после компиляции 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

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

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

Когда я устанавливаю date.timezone конфигурации 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 как это предлагается в принятом ответе https://stackoverflow.com/a/20731466/2111430, эта опция принимается, потому что этот файл имеет только [PHP] раздел. Из любопытства я попробовал другие включенные ini файлы, и похоже, что я могу использовать их.

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

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

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

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

/etc/php5/cli/php.ini

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

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

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

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

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

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