Невозможно установить дату.часовой пояс в 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]
; 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-файла, но ни один из них не переопределяет дату.настройка часового пояса
Я проверил php.разрешение ini-файла, но все еще не работает пожалуйста, направьте меня, чтобы решить эту проблему, спасибо..
11 ответов
попробуйте это:
date.timezone = "Asia/Jakarta"
Edit:
давайте найдем правильный php.ini. Запустите это в apache / nginx / любом веб-сервере, который вы используете (потому что версия командной строки может отличаться от используемой ею).
<?php
phpinfo();
?>
чем .ini на выходе? Все тот же?
Edit2:
после php.ini edit, просто перезапустите веб-сервер (apache или nginx)...
наконец-то решил мою проблему, это мой загруженный файл конфигурации:
/etc/php5/apache2/php.ini
изменена дата.часовой пояс здесь, но он не работает.
Итак, я проверяю " сканировать этот dir для дополнительного .ini-файлы " значения в phpinfo (), которые указывают на:
/etc/php5/apache2/conf.d
затем я ищу дату.часовой пояс у всех файлов в этой папке, но не нашел.
Это мой дополнительный .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 не/конф.d / 20-xdebug.ini, и добавил эту строку:
date.timezone = Asia/Jakarta
очень странно, но это решило мою проблему !!!
вы должны проверить, найдите php.в, если где-то есть еще один.
для меня. там должен быть 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
) и он отлично работает. По какой-то причине он был скопирован неправильно.
- Дистрибутив: Centos 7
- Веб-Сервер: Nginx
- тип: экземпляр EC2
недавно я столкнулся с той же проблемой с PHP 5.6.4.
- в PHP 5.6.4 ведет себя странно
- в PHP 5.6.11 ведет себя нормально, как и ожидалось
когда я ставлю date.timezone
опция конфигурации в разделе [PHP] в файле конфигурации отлично работает для PHP 5.6.4. Например я добавил опцию в самом начале
[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 опция принята, потому что этот файл имеет только . Из любопытства я попробовал другие ini
файлы и, похоже, я могу использовать любой.
еще раз, проблема произошла для меня только с PHP 5.6.4. Когда я изменил опцию на сервере с PHP 5.6.11, она вела себя точно так, как я ожидал.
проверьте наличие конфликтующих настроек в php.ini, у меня была такая же проблема, и в моем случае настройки xdebug определены до даты.часовой пояс, вызывающий эту вещь: для более подробной информации см.:PHP Xdebug issue - дата.часовой пояс и сеанс.save_path undefined
Он работал для меня, когда я заметил, что дата.запись часового пояса в 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 только с датой.директива часового пояса.
Если вы установили дату.значение часового пояса в PHP.ini но он не работает (т. е.. локальное значение и основное значение разные), то вам может потребоваться обновить что-то вроде этого в файле конфигурации apache:
<IfModule mod_php5.c>
php_value date.timezone "Europe/Paris"
</IfModule>
в моем случае у меня было 2 date.timezone=
записи в php.ini-файл и последний был переопределен первым. удаление одного из них решило мою проблему.
также не забывайте, что вам нужно перезапустить процесс веб-сервера.