Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

PHP Warning: utf8_to_unicode: | PHP Notice: Undefined index:


DAN

Recommended Posts

OcStore 1.5.3.1

периодически в админке вылезают 2 ошибки одновременно:

При каких действиях пользователя, понять не могу и воспроизвести ее самому не получается.

2013-05-20 5:40:05 - PHP Warning:  utf8_to_unicode: Incomplete multi-octet sequence in UTF-8 at byte 57 in /....../system/helper/utf8.php on line 765
2013-05-20 5:40:05 - PHP Notice:  Undefined index:  in /......./catalog/controller/common/seo_pro.php on line 68

 

utf8.php on line 765:

trigger_error('utf8_to_unicode: Incomplete multi-octet sequence in UTF-8 at byte ' . $i, E_USER_WARNING);

Кусок кода со строкой 765:

for($i = 0; $i < $len; $i++) {
		$in = ord($str{$i});
		
		if ($mState == 0) {
			
			// When mState is zero we expect either a US-ASCII character or a
			// multi-octet sequence.
			if (0 == (0x80 & ($in))) {
				// US-ASCII, pass straight through.
				$out[] = $in;
				$mBytes = 1;
				
			} elseif (0xC0 == (0xE0 & ($in))) {
				// First octet of 2 octet sequence
				$mUcs4 = ($in);
				$mUcs4 = ($mUcs4 & 0x1F) << 6;
				$mState = 1;
				$mBytes = 2;
				
			} elseif (0xE0 == (0xF0 & ($in))) {
				// First octet of 3 octet sequence
				$mUcs4 = ($in);
				$mUcs4 = ($mUcs4 & 0x0F) << 12;
				$mState = 2;
				$mBytes = 3;
				
			} else if (0xF0 == (0xF8 & ($in))) {
				// First octet of 4 octet sequence
				$mUcs4 = ($in);
				$mUcs4 = ($mUcs4 & 0x07) << 18;
				$mState = 3;
				$mBytes = 4;
				
			} else if (0xF8 == (0xFC & ($in))) {
				/* First octet of 5 octet sequence.
				*
				* This is illegal because the encoded codepoint must be either
				* (a) not the shortest form or
				* (b) outside the Unicode range of 0-0x10FFFF.
				* Rather than trying to resynchronize, we will carry on until the end
				* of the sequence and let the later error handling code catch it.
				*/
				$mUcs4 = ($in);
				$mUcs4 = ($mUcs4 & 0x03) << 24;
				$mState = 4;
				$mBytes = 5;
				
			} else if (0xFC == (0xFE & ($in))) {
				// First octet of 6 octet sequence, see comments for 5 octet sequence.
				$mUcs4 = ($in);
				$mUcs4 = ($mUcs4 & 1) << 30;
				$mState = 5;
				$mBytes = 6;
				
			} else {
				/* Current octet is neither in the US-ASCII range nor a legal first
				 * octet of a multi-octet sequence.
				 */
				trigger_error('utf8_to_unicode: Illegal sequence identifier ' . 'in UTF-8 at byte ' . $i, E_USER_WARNING);
				
				return FALSE;
			}
		
		} else {
			
			// When mState is non-zero, we expect a continuation of the multi-octet
			// sequence
			if (0x80 == (0xC0 & ($in))) {
				
				// Legal continuation.
				$shift = ($mState - 1) * 6;
				$tmp = $in;
				$tmp = ($tmp & 0x0000003F) << $shift;
				$mUcs4 |= $tmp;
			
				/**
				* End of the multi-octet sequence. mUcs4 now contains the final
				* Unicode codepoint to be output
				*/
				if (0 == --$mState) {
					
					/*
					* Check for illegal sequences and codepoints.
					*/
					// From Unicode 3.1, non-shortest form is illegal
					if (((2 == $mBytes) && ($mUcs4 < 0x0080)) ||
						((3 == $mBytes) && ($mUcs4 < 0x0800)) ||
						((4 == $mBytes) && ($mUcs4 < 0x10000)) ||
						(4 < $mBytes) ||
						// From Unicode 3.2, surrogate characters are illegal
						(($mUcs4 & 0xFFFFF800) == 0xD800) ||
						// Codepoints outside the Unicode range are illegal
						($mUcs4 > 0x10FFFF)) {
						
						trigger_error('utf8_to_unicode: Illegal sequence or codepoint in UTF-8 at byte ' . $i, E_USER_WARNING);
						
						return false;
						
					}
					
					if (0xFEFF != $mUcs4) {
						// BOM is legal but we don't want to output it
						$out[] = $mUcs4;
					}
					
					//initialize UTF8 cache
					$mState = 0;
					$mUcs4  = 0;
					$mBytes = 1;
				}
			
			} else {
				/**
				*((0xC0 & (*in) != 0x80) && (mState != 0))
				* Incomplete multi-octet sequence.
				*/
/*<765>*/			trigger_error('utf8_to_unicode: Incomplete multi-octet sequence in UTF-8 at byte ' . $i, E_USER_WARNING);
				
				return false;
			}
		}
	}

 

 

seo_pro.php on line 68:

$url = explode('=', $queries[$part], 2);

 

кусок кода со строкой 68:

	public function index() {
		// Add rewrite to url class
		if ($this->config->get('config_seo_url')) {
			$this->url->addRewrite($this);
		} else {
			return;
		}

		// Decode URL
		if (!isset($this->request->get['_route_'])) {
			$this->validate();
		} else {
			$route = $this->request->get['_route_'];
			unset($this->request->get['_route_']);
			$parts = explode('/', trim(utf8_strtolower($route), '/'));
			/* BEGIN Actions */
			if (preg_match('#^(actions/)(.*)#', $route, $matches)) {
				$parts = explode('/', trim(utf8_strtolower($matches[2]), '/'));
				if($parts[0] == '' AND count($parts) == 1) {
					$parts = explode('/', trim(utf8_strtolower($route), '/'));
				}
			}
			/* END Actions */
			/* BEGIN News & Reviews */
			if (preg_match('#^(news/)(.*)#', $route, $matches)) {
				$parts = explode('/', trim(utf8_strtolower($matches[2]), '/'));
				if($parts[0] == '' AND count($parts) == 1) {
					$parts = explode('/', trim(utf8_strtolower($route), '/'));
				}
			}
			/* END News & Reviews */
			list($last_part) = explode('.', array_pop($parts));
			array_push($parts, $last_part);

			$rows = array();
			foreach ($parts as $keyword) {
				if (isset($this->cache_data['keywords'][$keyword])) {
					$rows[] = array('keyword' => $keyword, 'query' => $this->cache_data['keywords'][$keyword]);
				}
			}

			if (count($rows) == sizeof($parts)) {
				$queries = array();
				foreach ($rows as $row) {
					$queries[utf8_strtolower($row['keyword'])] = $row['query'];
				}

				reset($parts);
				foreach ($parts as $part) {
/*<68>*/					$url = explode('=', $queries[$part], 2);

					if ($url[0] == 'category_id') {
						if (!isset($this->request->get['path'])) {
							$this->request->get['path'] = $url[1];
						} else {
							$this->request->get['path'] .= '_' . $url[1];
						}
					} elseif (count($url) > 1) {
						$this->request->get[$url[0]] = $url[1];
					}
				}
			/* BEGIN Actions */
			} elseif ( (isset($keyword_in[0]) AND $keyword_in[0] == 'actions') OR (isset($parts[0]) AND $parts[0] == 'actions') ) {
				$this->request->get['route'] = 'information/actions';
			/* END Actions */
			/* BEGIN News & Reviews */
			} elseif ( (isset($keyword_in[0]) AND $keyword_in[0] == 'news') OR (isset($parts[0]) AND $parts[0] == 'news') ) {
				$this->request->get['route'] = 'information/news';
			/* END News & Reviews */
			} else {
				$this->request->get['route'] = 'error/not_found';
			}
								
			if (isset($this->request->get['product_id'])) {
				$this->request->get['route'] = 'product/product';
				if (!isset($this->request->get['path'])) {
					$path = $this->getPathByProduct($this->request->get['product_id']);
					if ($path) $this->request->get['path'] = $path;
				}
			} elseif (isset($this->request->get['path'])) {
				$this->request->get['route'] = 'product/category';
			} elseif (isset($this->request->get['manufacturer_id'])) {
				$this->request->get['route'] = 'product/manufacturer/product';
			} elseif (isset($this->request->get['information_id'])) {
				$this->request->get['route'] = 'information/information';
			/* BEGIN Actions */
			} elseif (isset($this->request->get['actions_id'])) {
				$this->request->get['route'] = 'information/actions';
			/* END Actions */
			/* BEGIN News & Reviews */
			} elseif (isset($this->request->get['news_id'])) {
				$this->request->get['route'] = 'information/news';
			/* END News & Reviews */
			
			} else {
				if (isset($queries[$parts[0]])) {
					$this->request->get['route'] = $queries[$parts[0]];
				}
			}


			$this->validate();

			if (isset($this->request->get['route'])) {
				return $this->forward($this->request->get['route']);
			}
		}
	}

 

Подскажите где копать.

Все файла сохранены в кодировке UTF-8(без ВОМ)

 

Надіслати
Поділитися на інших сайтах


Знатоки, ну разжуйте мне, пожаста, доходчиво что это за ДВЕ ошибки.

2013-05-20 5:40:05 - PHP Warning:  utf8_to_unicode: Incomplete multi-octet sequence in UTF-8 at byte 57 in /....../system/helper/utf8.php on line 765
2013-05-20 5:40:05 - PHP Notice:  Undefined index:  in /......./catalog/controller/common/seo_pro.php on line 68 

 

Каждый день появляются в Админке в журнале ошибок и всегда вместе

В Гугле вразумительного ничего не нашел. :oops:

Надіслати
Поділитися на інших сайтах


Присоединяюсь,у меня тоже самое на ocstore 1.5.4.1, чпу включено, seopro выключен.

 

 

2013-05-27 14:20:46 - PHP Warning: utf8_to_unicode: Incomplete multi-octet sequence in UTF-8 at byte 4 in /home/din54/dinaudio.ru/docs/system/helper/utf8.php on line 765
2013-05-27 14:20:47 - PHP Warning: utf8_to_unicode: Incomplete multi-octet sequence in UTF-8 at byte 4 in /home/din54/dinaudio.ru/docs/system/helper/utf8.php on line 765
2013-05-28 9:25:35 - PHP Warning: unlink(/home/din54/dinaudio.ru/docs/system/cache/cache.currency.1369687333) [<a href='function.unlink'>function.unlink</a>]: No such file or directory in /home/din54/dinaudio.ru/docs/system/library/cache.php on line 18

Надіслати
Поділитися на інших сайтах


Тоже самое и меня мучает уже с год, решения пока найти не смог, проблема с кодировкой это понятно но при переводе в ютф8 файла сео то пропадает капча, нашол решение с капчей но ошибка всё равно периодически вылазит(

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Присоединяюсь к вопросу! У меня ocStore 1.5.4.1 Периодически в журнале ошибок выскакивает вместе две ошибки:

2013-07-19 4:52:49 - PHP Warning:  utf8_to_unicode: Incomplete multi-octet sequence in UTF-8 at byte 61 in /home/modnamam/domains/modnamama.com.ua/public_html/system/helper/utf8.php on line 765
2013-07-19 4:52:49 - PHP Notice:  Undefined index:  in /home/modnamam/domains/modnamama.com.ua/public_html/vqmod/vqcache/vq2-catalog_controller_common_seo_pro.php on line 60

Спецы, не проходите мимо, помогите решить проблему! :mellow:

Надіслати
Поділитися на інших сайтах


Раз ни кто не смог решить,делаю вывод что это кривой опенкарт, это как с поиском товаров в админке, у всех не работает,но ни кто не может починить...

Надіслати
Поділитися на інших сайтах


Раз ни кто не смог решить,делаю вывод что это кривой опенкарт, это как с поиском товаров в админке, у всех не работает,но ни кто не может починить...

А что с поиском? о_0

Надіслати
Поділитися на інших сайтах

  • 1 month later...

Тоже самое ловил у себя сначала на 1.5.2.1, а после обновления на 1.5.4.1 - и на ней. Причины выяснить не удалось - вроде такая ошибка может вылазить, когда файлы не в утф8 сохранены, но не могу найти что именно не так

Надіслати
Поділитися на інших сайтах

Эти ошибки появляется после перехода по такому урл  домен.ру/%EA%E8%ED%E4%E5%F0/

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

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.