При обновлении php до версии 5.3.x при запуске poller.php из пакета мониторинга сети cacti отображаются следующие ошибки:

PHP Deprecated: Function ereg_replace() is deprecated /usr/local/www/apache22/data/cacti/lib/rrd.php on line 31
PHP Deprecated:  Function ereg_replace() is deprecated /usr/local/www/apache22/data/cacti/lib/snmp.php on line 247
PHP Deprecated:  Function eregi_replace() is deprecated /usr/local/www/apache22/data/cacti/lib/snmp.php on line 289

Заменяем в файле /usr/local/www/apache22/data/cacti/lib/rrd.php строку 31

return ("(\\\$|`)", "", $command);
return ("/(\\\$|`)/", "", $command);

В файле /usr/local/www/apache22/data/cacti/lib/snmp.php заменяем строки:

  • 27
("REGEXP_SNMP_TRIM", "(hex|counter(32|64)|gauge|gauge(32|64)|float|ipaddress|string|integer):");
("REGEXP_SNMP_TRIM", "/(hex|counter(32|64)|gauge|gauge(32|64)|float|ipaddress|string|integer):/");
  • 203
$snmp_array[$o]["oid"] = ("^\.", "", $i);
$snmp_array[$o]["oid"] = ("/^\./", "", $i);
  • 237
$snmp_array[$i]["oid"] = (("(.*) =.*", "\\1", $temp_array[$i]));
$snmp_array[$i]["oid"] = (("/(.*) =.*/", "/\\1/", $temp_array[$i]));
  • 247
$string = ((".*= ?", "", $string));
$string = (("/.*= ?/", "", $string));
  • 269
$string = ("hex: ?", "", $string);
$string = ("/hex: ?/", "", $string);
  • 289
$string = (REGEXP_SNMP_TRIM, "", $string);
$string = (REGEXP_SNMP_TRIM, "", $string);

Однако, ошибки всё равно есть:

PHP Deprecated:  Function split() is deprecated /usr/local/www/apache22/data/cacti/poller.php on line 46
PHP Deprecated:  Function split() is deprecated /usr/local/www/apache22/data/cacti/cmd.php on line 61
PHP Deprecated:  Function split() is deprecated /usr/local/www/apache22/data/cacti/poller.php on line 168

везде заменяем split на explode

($micro,$seconds) = (" ", ());

На самом деле, это не все ошибки, подумайте сами, как убрать, например, такое сообщение

PHP Deprecated: Assigning the return value of new by reference is deprecated /usr/local/www/apache22/data/cacti/lib/adodb/adodb.inc.php on line 866
PHP Deprecated: Assigning the return value of new by reference is deprecated /usr/local/www/apache22/data/cacti/lib/adodb/adodb.inc.php on line 872
865 if ($this->_queryID === true) { // return simplified recordset for inserts/updates/deletes with lower overhead
866 $rs =& new ADORecordSet_empty();
867 return $rs;
868 }
869
870 // return real recordset from select statement
871 $rsclass = $this->rsPrefix.$this->databaseType;
872 $rs =& new $rsclass($this->_queryID,$this->fetchMode);
873 $rs->connection = &$this; // Pablo suggestion