Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


DAN
 Поделиться

Рекомендованные сообщения

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 месяц спустя...

Присоединяюсь к вопросу! У меня 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 месяц спустя...

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

Ссылка на комментарий
Поделиться на других сайтах

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

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

Ссылка на комментарий
Поделиться на других сайтах

только при переходе в магазин по ссылке в cp1251.

 

Доброй ночи, объясните пожалуйста что это значит? только при переходе в магазин по ссылке в cp1251.

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.