Я использую 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
), и он отлично работает. По какой-то причине он был скопирован неправильно.
Недавно я столкнулся с той же проблемой с PHP 5.6.4.
Когда я устанавливаю 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, а последнее – переопределение первого. удаление одного из них решило мою проблему.
Также не забывайте, что вам необходимо перезапустить процесс веб-сервера.