Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Не могу отредактировать шаблон появляется 500 ошибка

Опубликовано:

Здравствуйте.

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

Когда вношу правку, сохраняю, все как обчыно, в админке все ок.

Но на сайте получается 500 ошибка. Спасает только замена папки skin_cache на оригинальную (у меня бекапы есть)

Я смотр по логам, где ошибка - показывает где, но там нет этой ошибки, ерунда какая-то оплучается.

Например вот:

[Tue Aug  7 00:57:10 2012] [error] PHP Parse error:  syntax error, unexpected T_STRING, expecting ']' in /bhome/part3/03/sitepath/www/cache/skin_cache/cacheid_11/skin_global.php on line 264

 

И еще, может быть это не связано, но в логах постоянно записываются вот такие вот ошибки:

[Tue Aug  7 08:25:58 2012] [error] PHP Warning:  sprintf() [<a href='function.sprintf'>function.sprintf</a>]: Too few arguments in /bhome/part3/03/sitepath/www/cache/skin_cache/cacheid_11/skin_forum.php on line 664
[Tue Aug  7 08:25:58 2012] [error] PHP Warning:  sprintf() [<a href='function.sprintf'>function.sprintf</a>]: Too few arguments in /bhome/part3/03/sitepath/www/cache/skin_cache/cacheid_11/skin_forum.php on line 664
[Tue Aug  7 08:25:58 2012] [error] PHP Warning:  sprintf() [<a href='function.sprintf'>function.sprintf</a>]: Too few arguments in /bhome/part3/03/sitepath/www/cache/skin_cache/cacheid_11/skin_forum.php on line 309
[Tue Aug  7 08:26:03 2012] [error] PHP Warning:  sprintf() [<a href='function.sprintf'>function.sprintf</a>]: Too few arguments in /bhome/part3/03/sitepath/www/cache/skin_cache/cacheid_11/skin_topic.php on line 1039

 

Права на папки стоят 777.

Очистку кеша шаблонов тоже не могу сделать.

С чего это началось - понятия не имею, всегда все редактировалось и правилось.

Чудеса какие-то.

 

Спасибо.

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

Опубликовано:
  • Автор

Вот строчки из skin_forum

(663-668)

<span class='desc lighter blend_links'>
		" . sprintf($data['starter'] ) . " <span itemprop=\"dateCreated\">" . $this->registry->getClass('class_localization')->getDate($data['start_date'],"DATE", 0) . "</span>
		" . ((isset($data['tags']) AND $data['tags']) ? ("
			  <img src='{$this->settings['img_url']}/icon_tag.png' /> {$data['tags']['formatted']['truncatedWithLinks']}
		") : ("")) . "
	</span>

 

300-318

<br class='clear' />	
<div id='forum_footer' class='statistics clear clearfix'>
	" . ((is_array( $mod_data ) AND count( $mod_data )) ? ("
		<div id='forum_led_by' class='right ipsType_small'>
			<img src='{$this->settings['img_url']}/icon_users.png' />  {$this->lang->words['forum_led_by']}
			".$this->__f__ec5f9ed184d6be52178cfff7ea383e97($forum_data,$announce_data,$topic_data,$other_data,$multi_mod_data,$sub_forum_data,$footer_filter,$active_user_data,$mod_data,$inforum)."			</div>
	") : ("")) . "
	" . ((is_array( $active_user_data ) AND count( $active_user_data )) ? ("<div id='forum_active_users' class='active_users stats_list'>
			<h4 class='statistics_head'>" . sprintf( $this->lang->words['active_users_titlef'], $active_user_data['stats']['total'] ) . "</h4>
			<p class='statistics_brief'>" . sprintf( $this->lang->words['active_users_detail'], $active_user_data['stats']['members'], $active_user_data['stats']['guests'], $active_user_data['stats']['anon'] ) . "</p>
			<br />
			<ul class='ipsList_inline'>
				" . ((is_array( $active_user_data['names'] ) AND count( $active_user_data['names'] )) ? ("
					" . implode( ', ', $active_user_data['names'] ) . "
				") : ("")) . "
			</ul>
		</div>") : ("")) . "	
</div>") : ("")) . "
<br class='clear' />

 

 

skin_topc 1035-1047

<!-- ACTIVE USERS -->
" . ((is_array( $displayData['active_users'] ) AND count( $displayData['active_users'] )) ? ("<div id='topic_stats' class='statistics clear clearfix'>
	<div id='topic_active_users' class='active_users'>
		<h4 class='statistics_head'>" . sprintf( $this->lang->words['active_users_title'], $displayData['active_users']['stats']['total'] ) . "</h4>
		<p class='statistics_brief desc'>" . sprintf( $this->lang->words['active_users_detail'], $displayData['active_users']['stats']['members'], $displayData['active_users']['stats']['guests'], $displayData['active_users']['stats']['anon'] ) . "</p>
		" . ((is_array( $displayData['active_users']['names'] ) AND count( $displayData['active_users']['names'] )) ? ("
			<br />
			<ul class='ipsList_inline'>
				" . implode( ', ', $displayData['active_users']['names'] ) . "
			</ul>
		") : ("")) . "
	</div>
</div>") : ("")) . "

 

skin_global (252_267)

<meta charset=\"{$this->settings['gb_char_set']}\" />
	<title>{$header_items['title']}</title>
	<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />
	<link rel=\"shortcut icon\" href='" . (($this->registry->output->isHTTPS) ? ("{$this->settings['board_url_https']}") : ("{$this->settings['board_url']}")) . "/favicon.ico' />
	<link rel=\"image_src\" href='{$this->settings['meta_imagesrc']}' />
	<script type='text/javascript'>
	//<![CDATA[
		jsDebug			= " . intval($this->settings['_jsDebug']) . "; /* Must come before JS includes */
		USE_RTE			= 1;
		DISABLE_AJAX	= parseInt({$this->settings['disable_text_ajax']}); /* Disables ajax requests where text is sent to the DB; helpful for charset issues */
		inACP			= false;
		var isRTL		= false;
		var rtlIe		= '';
		var rtlFull		= '';
	//]]>
	</script>

Опубликовано:
  • Автор

Это мжоет быть как-то связано с тем, что я использую jquery (по правилам, конечно, через jQuery(''), а не $(""), чтобы не вызывать онфликтов)

Просто есть строчка, в skin_global:

jsDebug         = " . intval($this->settings['_jsDebug']) . "; /* Must come before JS includes */

У меня код до этой стройки идет.

Это вообще про это?

Опубликовано:

Здравствуйте.

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

Когда вношу правку, сохраняю, все как обчыно, в админке все ок.

Но на сайте получается 500 ошибка. Спасает только замена папки skin_cache на оригинальную (у меня бекапы есть)

Я смотр по логам, где ошибка - показывает где, но там нет этой ошибки, ерунда какая-то оплучается.

Например вот:

[Tue Aug  7 00:57:10 2012] [error] PHP Parse error:  syntax error, unexpected T_STRING, expecting ']' in /bhome/part3/03/sitepath/www/cache/skin_cache/cacheid_11/skin_global.php on line 264

 

И еще, может быть это не связано, но в логах постоянно записываются вот такие вот ошибки:

[Tue Aug  7 08:25:58 2012] [error] PHP Warning:  sprintf() [<a href='function.sprintf'>function.sprintf</a>]: Too few arguments in /bhome/part3/03/sitepath/www/cache/skin_cache/cacheid_11/skin_forum.php on line 664
[Tue Aug  7 08:25:58 2012] [error] PHP Warning:  sprintf() [<a href='function.sprintf'>function.sprintf</a>]: Too few arguments in /bhome/part3/03/sitepath/www/cache/skin_cache/cacheid_11/skin_forum.php on line 664
[Tue Aug  7 08:25:58 2012] [error] PHP Warning:  sprintf() [<a href='function.sprintf'>function.sprintf</a>]: Too few arguments in /bhome/part3/03/sitepath/www/cache/skin_cache/cacheid_11/skin_forum.php on line 309
[Tue Aug  7 08:26:03 2012] [error] PHP Warning:  sprintf() [<a href='function.sprintf'>function.sprintf</a>]: Too few arguments in /bhome/part3/03/sitepath/www/cache/skin_cache/cacheid_11/skin_topic.php on line 1039

 

Права на папки стоят 777.

Очистку кеша шаблонов тоже не могу сделать.

С чего это началось - понятия не имею, всегда все редактировалось и правилось.

Чудеса какие-то.

 

Спасибо.

 

в логах написано "Слишком мало аргументов" в имя_файла в номер_строки

Опубликовано:
  • Автор

То есть? Я не очень понимаю,что это может означать?

Опубликовано:
о на сайте получается 500 ошибка. Спасает только замена папки skin_cache на оригинальную (у меня бекапы есть)

Ваша ошибка в том, что вы манипулируете файлами кэша. Перестаньте это делать, и все станет хорошо.

 

Где-то в шаблонах или хуках у вас ошибка. Когда вы наконец позволяете форуму записать кэши из базы - она проявляется, и вы получаете "ошибку 500". Без нахождения и исправления этой ошибки вы дальше не продвинетесь.

 

Начните с переключения на стандартный скин. На нем есть такая же ошибка?

Опубликовано:
  • Автор

Но я ведь эти файлы не трогал вообще? Почему такой косяк мог получиться? Я просто уже опытным путем эти папки заменил, и все заработало, а так - караул, ничего не работает.

 

А вообще - как процесс происходит? Форум читайет файлы из базы или из кеша?

 

Вот когда я в админке открываю редактирование шаблона - он там откуда? Из базы или из кэша?

 

Спасибо.

Изменено пользователем SergeyC

Опубликовано:

Вся работа в админке осуществляется с шаблонами в базе. Вообще все шаблоны хранятся в базе. И редактируется тоже версия в базе. При этом при каждой правке и/или при ручной перестройке в кэш пишется уже скомпилированный код из шаблонов, который уже используется для отрисовки страниц форума.

 

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

 

И если в шаблоне есть какая-то ошибка - с каждой перестройкой вы снова получаете свою "500". Пока не исправите ошибку в шаблоне - так и будет все висеть "на соплях".

Опубликовано:
  • Автор

Хорошо, спасибо, я понял.

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

Опубликовано:

Она в том тексте который в админке показывается, который в свою очередь берется из базы данных.

Опубликовано:
skin_global.php on line 264

Значит, ошибка в глобальных шаблонах. Возможно, даже в globalTemplate. Формат действий простой - копируйте все измененные шаблоны куда-то во временные текстовые файлы, затем откатываете все глобальные шаблоны. Ошибка должна пропасть.

 

1. Если не пропала - значит виноваты хуки, возвращаете правки назад, отключаете все хуки, и включаете назад по одному, пока не найдете проблемный.

 

2. Если пропала - возвращаете правки по одной, пока не получите 500. Начните с globalTemplate - вероятнее всего проблема в нем. Как найдете больной шаблон, снова откатите его к оригиналу, и заменяйте частями - и так пока не локализуете конкретную проблемную строку. Если сами не поймете, что с ней не так - кидайте сюда.

 

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

Опубликовано:

Второй вариант - приаттачить skin_global.php, но только не из бекап-версии, как вы сделали выше, а из той версии, что дает ошибку 500, с текстом всех ошибок, что он создает. По названиям функций можно будет локализовать шаблоны и даже их фрагменты, а там и до нахождения ошибки недалеко :)

Опубликовано:
  • Автор

Спасибо за участие и за помощь.

Разобрался.

Сравнивал шаблон из базы данных с тем, что был в бекапе, и нашел ошибку. Самдурак в общем.

 

Теперь вопрос про лог файлы, которые с ошибками.

В поддержке сказали, что все ошибки, которые "sprintf()" связаны с языковыми файлами.

Но вот тут. например, где языковой файл? (вторая строчка (664 в логах) )

<span class='desc lighter blend_links'>
		" . sprintf($data['starter'] ) . " <span itemprop=\"dateCreated\">" . $this->registry->getClass('class_localization')->getDate($data['start_date'],"DATE", 0) . "</span>
		" . ((isset($data['tags']) AND $data['tags']) ? ("
			  <img src='{$this->settings['img_url']}/icon_tag.png' /> {$data['tags']['formatted']['truncatedWithLinks']}
		") : ("")) . "
	</span>

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.