Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: globaluty в Aug 25, 2014, 14:00



Титла: настройка на date.timezone
Публикувано от: globaluty в Aug 25, 2014, 14:00
Здравейте.

root@debian:/var/www# php --ini
Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File: /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed: /etc/php5/cli/conf.d/10-pdo.ini,
/etc/php5/cli/conf.d/20-mysql.ini,
/etc/php5/cli/conf.d/20-mysqli.ini,
/etc/php5/cli/conf.d/20-pdo_mysql.ini

Направих редакция на /etc/php5/cli/php.ini. Сега е:

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Sofia"

Рестартирах апачето: /etc/init.d/apache2 restart

Часът все още е +10 ч.

Проверих и Additional .ini files parsed да не би някъде да се презаписва, но няма.

Някакви идеи? Ползвам дебиан 7.6


Титла: Re: настройка на date.timezone
Публикувано от: neter в Aug 25, 2014, 14:08
Конфигурационният файл php.ini в папката /etc/php5/cli (както и всички други файлове в тази папка) се отнася за изпълнение на php в конзолата (cli = command line interface). За php-то, изпълнявано от apache, е нужно да редактираш конфигурацията в папката /etc/php5/apache2.


Титла: Re: настройка на date.timezone
Публикувано от: globaluty в Aug 25, 2014, 15:21
И там го бях задал също.

date.timezone = "Europe/Sofia"

Зоната на самия комп. обаче беше HST, сега я промених, но все пак часовникът е грешен с +1 час.

root@debian:/# date
Tue Aug 26 04:19:35 EEST 2014



Титла: Re: настройка на date.timezone
Публикувано от: neter в Aug 25, 2014, 15:27
Tue Aug 26 04:19:35 EEST 2014
Спрямо времето на писане на поста ти това не е отместване от +1 час, а от +13 часа :) Може да го свериш с date
Цитат
date -s "25 AUG 2014 15:27:00"
а най-добре инсталирай и пусни ntp демона да ти сверява часа
Цитат
apt-get install ntp


Титла: Re: настройка на date.timezone
Публикувано от: globaluty в Aug 25, 2014, 15:32
Настроих го ръчно, имам инсталиран ntp, но часовникът си изостава пак.

Имам следните сървъри добавени в ntp.conf:
 server 0.bg.pool.ntp.org
 server 1.bg.pool.ntp.org
 server 2.bg.pool.ntp.org
 server 3.bg.pool.ntp.org

Как да го сверя чрез ntp ?


Титла: Re: настройка на date.timezone
Публикувано от: neter в Aug 25, 2014, 15:40
Увери се, че нямаш някакви ограничения за изходящи заявки към порт 123 през UDP (това са портът и протоколът, с които работи NTP)! Може да пробваш какво се случва при ръчно обръщение към някой от тези сървъри
Цитат
ntpdate 0.bg.pool.ntp.org
За целта ще трябва да инсталираш пакета ntpdate, ако го нямаш инсталиран.


Титла: Re: настройка на date.timezone
Публикувано от: globaluty в Aug 25, 2014, 15:42
root@debian:/etc# ntpdate 0.bg.pool.ntp.org
25 Aug 15:41:38 ntpdate[12020]: the NTP socket is in use, exiting
root@debian:/etc# ntpdate pool.ntp.org
25 Aug 15:41:47 ntpdate[12091]: the NTP socket is in use, exiting


Титла: Re: настройка на date.timezone
Публикувано от: neter в Aug 25, 2014, 15:48
Така де - спри ntp демона преди това :)


Титла: Re: настройка на date.timezone
Публикувано от: globaluty в Aug 25, 2014, 15:52
root@debian:/etc# ntpdate 0.bg.pool.ntp.org
25 Aug 15:50:41 ntpdate[16005]: no server suitable for synchronization found


Титла: Re: настройка на date.timezone
Публикувано от: neter в Aug 25, 2014, 15:59
Ако командата
Цитат
host 0.bg.pool.ntp.org
ти връща IP адреси, тогава търси проблема в позволението на порта, за който ти споменах одеве. Първо прегледай iptables-а на самата машина, преди да тръгнеш да търсиш забрани по суичове и рутери по пътя извън машината!

Ако не ти се връщат IP адреси, тогава търси проблема в DNS сървърите, които ползваш!


Титла: Re: настройка на date.timezone
Публикувано от: globaluty в Aug 25, 2014, 16:04
root@debian:/etc/php5/cli# host 0.bg.pool.ntp.org
0.bg.pool.ntp.org has address 193.19.172.5
0.bg.pool.ntp.org has address 79.98.105.18
0.bg.pool.ntp.org has address 84.54.128.8
0.bg.pool.ntp.org has address 87.120.164.97

root@debian:/etc/php5/cli# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


Значи забраната е извън машината?

А какво да правя с web server-a? В момента забелязах, че часовникът на уеб сървъра се е променил, но пак е грешен (показва 13ч. вместо 16ч.). Както казах и на двете места (etc/php5/cli/php.ini и etc/php5/apache2/php.ini) е сетната "Europe/Sofia" таймзона.


Титла: Re: настройка на date.timezone
Публикувано от: neter в Aug 25, 2014, 16:13
Значи забраната е извън машината?
Ако това е проблемът - да.

В момента забелязах, че часовникът на уеб сървъра се е променил
В резултат на какво се е променил? Пробвай да го свериш ръчно с date, след което може да засилиш стойността и към хардуерният часовник с команда
Цитат
hwclock -w
след което проследи ще се промени ли пак часовникът и евентуално какъв процес ще е съвпаднал с неговата промяна, който да бъде обвинен за това. Преди да промениш хардуерният часовник виж текущата му стойност с команда
Цитат
hwclock -r


Титла: Re: настройка на date.timezone
Публикувано от: globaluty в Aug 25, 2014, 16:17
root@debian:/etc/php5/cli# date
Mon Aug 25 16:15:37 EEST 2014
root@debian:/etc/php5/cli# hwclock -r
Mon 25 Aug 2014 04:15:41 PM EEST  -0.297274 seconds

Двата часовника са сверени, след като ръчно сверих първия и му прехвърлих стойността на другия. Тук няма промяна от тогава.

Аз говорих обаче за apache сървъра, там си е изостанал с 3 часа, а уж е зададена "Europe/Sofia" таймзона на двете места (etc/php5/cli/php.ini и etc/php5/apache2/php.ini).  :(


Титла: Re: настройка на date.timezone
Публикувано от: neter в Aug 25, 2014, 16:26
Може би е излишно, но все пак да попитам... рестартира ли apache-то след редакцията на php.ini файла? И как по-точно проверяваш текущия час през apache-то? Ако сложиш следния код в един php файл
Код
GeSHi (PHP):
  1. <?php
  2. setlocale(LC_TIME, 'bg_BG.UTF-8');
  3. echo strftime("%A, %d %B %Y, %H:%M:%S", strtotime(date("d F Y, H:i:s")));
  4. ?>
и го заредиш през apache в браузъра какво изписва?


Титла: Re: настройка на date.timezone
Публикувано от: globaluty в Aug 25, 2014, 16:39
През панел го проверявам, чийто създател каза, че времето в панела зависи от php настройките на сървъра.

Опитах се да сложа phpinfo(), както и твоя код, но "The requested URL /php.php was not found on this server." Каквото и да кача друго в var/www не излиза в браузъра, освен въпросният панел.


Титла: Re: настройка на date.timezone
Публикувано от: neter в Aug 25, 2014, 16:47
Увери се отново, че /var/www е папката, която е зададена за този VirtualHost в apache, след което провери за пренасочващи правила в настройките на VirtualHost-а или в .htaccess файл в тази папка.


Титла: Re: настройка на date.timezone
Публикувано от: globaluty в Aug 25, 2014, 17:10
http://212.233.253.130/php.php
http://212.233.253.130/phpinfo.php

Mисля, че проблемът ще да е в панела.  ::)


Титла: Re: настройка на date.timezone
Публикувано от: remotexx в Aug 26, 2014, 02:15
3 часа разлика... да не би нещо да е настроено да работи по Гринуич?
Най-вероятно hwclock
Или ако гледаш некой журнал само той да печата в UTC...


Титла: Re: настройка на date.timezone
Публикувано от: globaluty в Aug 26, 2014, 13:48
3 часа разлика... да не би нещо да е настроено да работи по Гринуич?
Най-вероятно hwclock
Или ако гледаш некой журнал само той да печата в UTC...

Панелът е бил настроен да работи по GMT.

Използвам vsftpd за FTP, при него пък като кача файл излизат, че са качени с +3 часа. Тоест там часовникът е напред с 3 часа. Часовникът на самия компютър е настроен (hwclock също). Някакви идеи за там?

В vsftpd.conf имам следната настройка:
//When enabled, directory listings reveal the local time for the computer instead of GMT.
use_localtime=YES


Титла: Re: настройка на date.timezone
Публикувано от: neter в Aug 26, 2014, 15:11
Ако FTP потребителите са в chroot среда (т.е., ако имаш зададено chroot_local_user=yes в конфигурацията на vsftpd), тогава пробвай да създадеш папка с име "etc" (без кавичките) в домашната папка на някой потребител, копирай в нея файла /etc/localtime, задай на копирания файл собственикът да е root и да може само да се чете от други потребители, след което пробвай променило ли се е нещо около часовете на файловете, които този FTP потребител качва.

Може да пробваш и да сложиш такъв код в /etc/init.d/vsftpd (или там, както се казва init файла за vsftpd при теб) точно под реда ". /lib/lsb/init-functions"
Код
GeSHi (Bash):
  1. if [ -z "$TZ" -a -e /etc/timezone ]; then
  2.    TZ=`cat /etc/timezone`
  3.    export TZ
  4. fi
след което трябва да рестартираш vsftpd.


Титла: Re: настройка на date.timezone
Публикувано от: remotexx в Aug 26, 2014, 15:19
Нормално.
София е 3 часа напред от Гринуич през лятото и 2 часа напред зимата.
Ако искаш до ти показва еднакви времена може:
1. Да забраниш там в този файл да се ползва локалното време.
2. Да си настроиш навсякъде до е локално.
Аз лично бих предпочел вариант 2. Защото някой дни ще ти е +2 други +3 и дори и да го лъжеш каго го буташ 2-3 часа напред уж че е локално време ...все някой ден нещо или някой ще го свери онлайн с атомен часовник и... пак ще го оака.


Титла: Re: настройка на date.timezone
Публикувано от: globaluty в Aug 27, 2014, 14:18
Ако FTP потребителите са в chroot среда (т.е., ако имаш зададено chroot_local_user=yes в конфигурацията на vsftpd), тогава пробвай да създадеш папка с име "etc" (без кавичките) в домашната папка на някой потребител, копирай в нея файла /etc/localtime, задай на копирания файл собственикът да е root и да може само да се чете от други потребители, след което пробвай променило ли се е нещо около часовете на файловете, които този FTP потребител качва.

Може да пробваш и да сложиш такъв код в /etc/init.d/vsftpd (или там, както се казва init файла за vsftpd при теб) точно под реда ". /lib/lsb/init-functions"
Код
GeSHi (Bash):
  1. if [ -z "$TZ" -a -e /etc/timezone ]; then
  2.    TZ=`cat /etc/timezone`
  3.    export TZ
  4. fi
след което трябва да рестартираш vsftpd.

Добавих etc папка с localtime файл в основната директория на потребител, като зададах на папката и файла 644 права. Пробвах след това да кача нов файл с въпросния потребител, но нямаше разлика във времето.

Реших да пробвам и второто нещо, което предложи, но няма "/lib/lsb/init-functions" в /etc/init.d/vsftpd.

При премахването на use_localtime, часът вече е наред.
А имате ли някаква идея как да показва и в коя секунда е качен дадения файл, тъй като в момента ги закръгля до минутата? Също така и ако може да изписва правата с цифри, а не drwx...

Благодаря ви.