Версия от 09/19/2013 19:12

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Версия от 09/19/2013 19:12

Сообщение Amarok » Пт сен 20, 2013 6:30 am

Только у меня после обновления от 09/19/2013 19:12 Алиса перестала говорить?
Моя Алиска живёт на Proxmox в Debian 12
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Версия от 09/19/2013 19:12

Сообщение Amarok » Пт сен 20, 2013 6:36 am

Странно, вообще скрипты работать не стали оказывается :((((
Моя Алиска живёт на Proxmox в Debian 12
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Версия от 09/19/2013 19:12

Сообщение Amarok » Пт сен 20, 2013 6:58 am

Код: Выделить всё

Sep 20, 2013 09:54:18 http://127.0.0.1/admin.php?pd=c2NyaXB0czp7aW5zdGFuY2U9YWRtfQ%3D%3Dpz_cGFuZWw6e2FjdGlvbj1zY3JpcHRzfQ%3D%3Dpz_&md=scripts&inst=adm&view_mode=run_script&id=12
Error:
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
SELECT * FROM commands WHERE LINKED_OBJECT LIKE 'netping_o1' AND LINKED_PROPERTY LIKE 'status' AND

 
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\_majordomo\htdocs\lib\htmlMimeMail.class.php on line 691
Моя Алиска живёт на Proxmox в Debian 12
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Версия от 09/19/2013 19:12

Сообщение Amarok » Пт сен 20, 2013 3:59 pm

Помогите исправить?
Моя Алиска живёт на Proxmox в Debian 12
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Версия от 09/19/2013 19:12

Сообщение LutsenkoDenis » Пт сен 20, 2013 5:16 pm

1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Код: Выделить всё

SELECT * FROM commands WHERE LINKED_OBJECT LIKE 'netping_o1' AND LINKED_PROPERTY LIKE 'status' AND
А это весь sql запрос? Если да, то он 100% не корректный, так как после and должно быть условие.

>Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\_majordomo\htdocs\lib\htmlMimeMail.class.php on line 691
Тут ругается на то что неможет подключиться к smtp-серверу.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Версия от 09/19/2013 19:12

Сообщение Amarok » Пт сен 20, 2013 5:31 pm

Код: Выделить всё

http://127.0.0.1:80/objects/?script=mattress
Изображение
Вот... :cry: :cry: :cry:
Началось после обновления
Моя Алиска живёт на Proxmox в Debian 12
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Версия от 09/19/2013 19:12

Сообщение LutsenkoDenis » Пт сен 20, 2013 5:58 pm

ну.. а что DebMes в лог пишет на эту тему?
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Версия от 09/19/2013 19:12

Сообщение LutsenkoDenis » Пт сен 20, 2013 6:25 pm

о всё.. я нашел ошибку.
Сергей слегка накосячил в последнем обновлении ;-)

Быстро исправить может он, т.к. точно знает как должно работать на самом деле.
Я могу исправить ошибку коде, но я не могу сказать какой будет результат, т.к. еще не знаю как должен работать алгоритм.

Как вариант можно откатиться назад.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Версия от 09/19/2013 19:12

Сообщение LutsenkoDenis » Пт сен 20, 2013 11:33 pm

Комментарии к данной ошибке.
Файл: /modules/objects/objects.class.php
Функция: function setProperty($property, $value, $no_linked = 0)
Важно! $no_linked = 0
Т.е. в любом случае переменная $no_linked существует и равна 0(если не указано другое значение при вызове функции)

Код: Выделить всё

$tables = array('commands', 'owproperties', 'snmpproperties', 'zwave_properties', 'mqtt');
if (!is_array($no_linked) && $no_linked) 
{
   $no_linked=array();
   foreach($tables as $t) 
   {
      $no_linked[$k]='0';
   }
} 
elseif (is_array($no_linked)) 
{
   foreach($tables as $t) 
   {
      if (!isset($no_linked[$k])) 
      {
         $no_linked[$k]='1';
      }
   }
} 
else 
{
   $no_linked=array();
   foreach($tables as $t) 
   {
      $no_linked[$k]='1';
   }
} {
1. Проверка на существование переменной/объекта делается так isset($no_linked)
2. В данном условии нужна только проверка на то, является ли данная переменная массивом. Т.к. при любом раскладе $no_linked существует.
3. Условие else не наступит никогда. Т.к. переменная $no_linked всегда существует и она либо является массивом либо нет. Другого варианта у неё нет.

Код: Выделить всё

 $commands = SQLSelect("SELECT * FROM commands WHERE LINKED_OBJECT LIKE '" . DBSafe($this->object_title) . "' AND LINKED_PROPERTY LIKE '" . DBSafe($property) . "' AND " . $no_linked['commands']);
1. Если $no_linked['commands'] не существует(ну вдруг), то запрос к базе будет ошибочный, т.к. после AND ничего не будет подставлено.
2. Если $no_linked['commands'] существет, то запрос к базе опять будет с ошибкой, так как после AND должна быть указана остальная часть условия. Если конечно $no_linked['commands'] не содержит в себе эту часть условия.
3. Такие запросы к базе очень тяжело дебажить, т.к. не известны условия выборки из БД. Т.е. несчем сравнить результат.

Код: Выделить всё

$snmpdevices = SQLSelect("SELECT ID FROM snmpproperties WHERE LINKED_OBJECT LIKE '" . DBSafe($this->object_title) . "' AND LINKED_PROPERTY LIKE '" . DBSafe($property) . "' AND " . $no_linked['snmpproperties']);
         $total = count($snmpdevices);
         if ($total)
Условие должно быть таким

Код: Выделить всё

if (isset($snmpdevices))
count($snmpdevices) вернёт 0 если переменная $snmpdevices не содержит результата запроса к базе или не объявлена.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Версия от 09/19/2013 19:12

Сообщение LutsenkoDenis » Пт сен 20, 2013 11:36 pm

или хотябы таким if ($total > 0)
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Ответить