Author Topic: Use of uninitialized value $monthStr in substitution  (Read 653 times)

min4er

  • Zen Apprentice
  • *
  • Posts: 6
  • Karma: +1/-0
    • View Profile
Use of uninitialized value $monthStr in substitution
« on: May 03, 2018, 01:54:53 pm »
Добрый день!
Пользуюсь стареньким Zentyal 2 (release precise)

Уже была такая тема, и осталась без ответа ((

 https://forum.zentyal.org/index.php?topic=5083.0

У меня такая же история! ничего не могу поделать. Приключился сбой, по-видимому, из-за перепада напряжения.
Пишет Use of uninitialized value $monthStr in substitution (s///) at /usr/share/perl5/EBox/CA.pm и не стартуют модули zentyal
Залез в указанный файл, закомментировал строку на которую ругалось. После этого всё стартует, кроме веб-сервера...
Пробовал скопипастить текст отсюда https://github.com/zentyal/zentyal/blob/master/main/ca/src/EBox/CA.pm - не подошло.
HELP/SOS как говорится..

luha

  • Zen Samurai
  • ****
  • Posts: 424
  • Karma: +28/-1
    • View Profile
Re: Use of uninitialized value $monthStr in substitution
« Reply #1 on: May 04, 2018, 09:24:07 am »
Вебсервер в том смысле что сайт там крутиться или речь о вебморде? Какую строку закомментировал? В логи вебсервера смотрелось? В логи зенчала?

min4er

  • Zen Apprentice
  • *
  • Posts: 6
  • Karma: +1/-0
    • View Profile
Re: Use of uninitialized value $monthStr in substitution
« Reply #2 on: May 04, 2018, 12:57:16 pm »
Добрый день!
На данный момент в файле CA.pm сделал так
#$monthStr =~ s/ +//g;
$monthStr = "05";
После этого при старте системы все модули запускаются, кроме Starting Zentyal webserver module Fail
Как результат, всё функционирует, кроме веба - ни вебморды, ни сайтов.
Логи - пытаюсь сейчас их разбирать. Подскажите какие смотреть - ибо я плохо ориентируюсь где логи модулей.

luha

  • Zen Samurai
  • ****
  • Posts: 424
  • Karma: +28/-1
    • View Profile
Re: Use of uninitialized value $monthStr in substitution
« Reply #3 on: May 04, 2018, 01:24:34 pm »
Логи как ни странно в /var/log/zentyal (в /var/log/ можно почитать системные).

Вот эта конструкция "s/ +//g"мне почему то напоминает синтаксис подмены через sed. Тоесть просто записать туда число нельзя.


Code: [Select]
    } elsif ($attribute eq 'endDate' ) {
        my ($monthStr, $day, $hour, $min, $sec, $yyyy) =
            ($output =~ /(.+) (\d+) (\d+):(\d+):(\d+) (\d+) (.+)/);

        $monthStr =~ s/ +//g;
        my $dateObj = Date::Calc->new($yyyy,
                Decode_Month($monthStr),
                $day, $hour, $min, $sec);
return $dateObj;

Тут сначала переменной присваиваются значения а потом (там где ты правил) удаляется часть символов, конкретно удаляются " +". В итоге должна получиться читаемая определённым образом информация которая потом будет использоваться для проверки я так понимаю валидности сертификатов.

Может у тебя в системе что-то с датой/временем стало? В биосе правильная дата?
« Last Edit: May 04, 2018, 01:36:35 pm by luha »

min4er

  • Zen Apprentice
  • *
  • Posts: 6
  • Karma: +1/-0
    • View Profile
Re: Use of uninitialized value $monthStr in substitution
« Reply #4 on: May 08, 2018, 01:55:18 pm »
Добрый день!
В системе с временем и датой всё в порядке. "Пошевелил" часы туда-сюда ради пробы - ничего не поменялось. Какие ещё будут мысли? Может, как-то всё-таки "от руки" можно дату правильно прописать в скрипте?

luha

  • Zen Samurai
  • ****
  • Posts: 424
  • Karma: +28/-1
    • View Profile
Re: Use of uninitialized value $monthStr in substitution
« Reply #5 on: May 08, 2018, 02:49:10 pm »
Я к сожалению довольно редко гребу в перловских скриптах но тот кусок что я скопировал он не просто месяц в переменной держит а дату в определённом формате и потом с этим работает. Ну вот хотябы сразу ниже идёт функция Decode_Month для перевода в другое значение, если туда вписать тупо "05" то что эта функция будет делать? Думается код верный и ошибок в куске нет, надо искать дальше. Дата в системе должна правильно определяться, а ещё раз речь о сертификатах то может просто закончились? Попробуй откатить дату и оффлайн запусти.


min4er

  • Zen Apprentice
  • *
  • Posts: 6
  • Karma: +1/-0
    • View Profile
Re: Use of uninitialized value $monthStr in substitution
« Reply #6 on: June 12, 2018, 10:41:49 am »
Добрый день!
Часто человек, найдя решение, не отписывается в тему, поэтому не поленюсь и отвечу на свой вопрос сам :) Возможно, кому-то окажется полезным!

Проблема была связана с "падежом" openssl. Переустановка openssl, настройка PATH - решили данную проблему!