Как устранить данную ошибку Unexpected character in input: ''' (ASCII=39)?

hoz

Новичок
Как устранить данную ошибку Unexpected character in input: ''' (ASCII=39)?

При чтении файла php выдаётся ошибка:
Код:
 Warning: Unexpected character in input: ''' (ASCII=39) state=1 in Z:\home\localhost\www\Veda\reputation.php(389)
 : eval()'d code on line 6  Parse error: syntax error, unexpected $end in Z:\home\localhost\www\Veda\reputation.php(389) :
 eval()'d code on line 7
НО.
Зайдя в этот файл reputation.php на 6 и 7 строке вообще всё закомментировано...
Вот начало кода файла reputation.php:
PHP:
/*======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.8.6
|| # ---------------------------------------------------------------- # ||
|| # Copyright ©2000-2010 Jelsoft Enterprises Ltd. All Rights Reserved. ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # [url]http://www.vbulletin.com[/url] | [url]http://www.vbulletin.com/license.html[/url] # ||
|| #################################################################### ||
\*======================================================================*/
// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE & ~8192);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT', 'reputation');
define('CSRF_PROTECTION', true);

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array('reputation', 'reputationlevel');

// get special data templates from the datastore
$specialtemplates = array(
	'smiliecache',
	'bbcodecache'
);
Где может быть ошибка? И как в таких случаях вообще искать ошибки? С кодом более менее понимаю, устанять ошибки не приходилось ещё.
Но мне очень интересно понять причину...
 

phprus

Moderator
Команда форума
hoz
Ошибка возникает в строке 389 файла reputation.php. А так как в vBulletin шаблоны и плагины выполняются при помощи eval, то смотри, что менял в шаблонах и плагинах, которые используются файлом reputation.php.
 

fixxxer

К.О.
Партнер клуба
Там еще и плагины через eval()? Oh shit, чем же они думали интересно.
 

weregod

unserializer
fixxxer
решение соответствовало тогдашнему уровню писателей
 

hoz

Новичок
Автор оригинала: phprus
hoz
Ошибка возникает в строке 389 файла reputation.php. А так как в vBulletin шаблоны и плагины выполняются при помощи eval, то смотри, что менял в шаблонах и плагинах, которые используются файлом reputation.php.
Так я ничего не менял. Установил уже какой раз форум с нуля. Сделал всё как по инструкции. Т.е. изменил только 2 файла... Вот как здесь указано.

-~{}~ 23.09.10 17:05:

Автор оригинала: fixxxer
Там еще и плагины через eval()? Oh shit, чем же они думали интересно.
А что тут такого то?
 

dimagolov

Новичок
hoz, у тебя явно альтернативная логика:
Так я ничего не менял. ....изменил только 2 файла
А что тут такого то?
eval is evil

-~{}~ 23.09.10 10:28:

ты прочитать и понять сообщение об ошибке в состоянии? там речь о 389 строке reputation.php где происходит eval какого-то кода, в котором в 7-й строке ошибка. то есть тебе нужно посмотреть eval()'d код и откуда он берется, чтобы найти ошибку.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
($hook = vBulletinHook::fetch_hook('reputation_form')) ? eval($hook) : false;

Что не понятно? Выведи переменную $hook и посмотри что в ней...

-~{}~ 07.10.10 18:07:

Note: To temporarily disable the plugin system, edit config.php and add this line right under <?php
define('DISABLE_HOOKS', true);

...нагуглено
 

hoz

Новичок
Автор оригинала: c0dex
($hook = vBulletinHook::fetch_hook('reputation_form')) ? eval($hook) : false;

Что не понятно? Выведи переменную $hook и посмотри что в ней...
Что ты имеешь ввиду под "Выведи переменную?"

-~{}~ 07.10.10 18:07:


Автор оригинала: c0dex

Note: To temporarily disable the plugin system, edit config.php and add this line right under <?php
define('DISABLE_HOOKS', true);

...нагуглено
В config.php нет такого кода: <?php define('DISABLE_HOOKS', true);
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
hoz
имею в виду вывести ее на экран. Попробуй добавить строку в конфиг.
 

phprus

Moderator
Команда форума
hoz
Зайди в админку, посмотри какой код вешается на хук reputation_form и внимательно просмотри найденный код.
 

hoz

Новичок
Автор оригинала: c0dex
hoz
имею в виду вывести ее на экран. Попробуй добавить строку в конфиг.
Строку ... т.е. так $hook(); ? (в config.php)
Может я не правильно понимаю, ... но мне не приходилось ещё сталкиваться кодом на практике. То что читал в книжках, понимаю с большего... а вот как и что устроено не реальных движках стараюсь понять.

Автор оригинала: phprus
hoz
Зайди в админку, посмотри какой код вешается на хук reputation_form и внимательно просмотри найденный код.
Хм. Зашёл я в админку. Там в модулях нашёл Variable Reputation Power Form , открыл... и увидел косяк разработчик. Не знаю, может он спецом сделал косяк, чтоб к нему обращались и платили за установку :) Не знаю... Вот что я там увидел:

Код:
$max_add = fetch_reppower($vbulletin->userinfo, $permissions, 'pos');
$min_add = ($show['negativerep']) ? fetch_reppower($vbulletin->userinfo, $permissions, 'neg') : 0;
$repa='';
if ($max_add>0 OR $min_add<0 OR $vbulletin->options['repa_nullenabled']) {
if ($vbulletin->options['repa_inputswitch']<($max_add-$min_add+1))
$repa = '
Как видно тут в коде ошибка. Я исправил косяк, добавив
Код:
';
в конец кода. Получился такой код:

Код:
$max_add = fetch_reppower($vbulletin->userinfo, $permissions, 'pos');
$min_add = ($show['negativerep']) ? fetch_reppower($vbulletin->userinfo, $permissions, 'neg') : 0;
$repa='';
if ($max_add>0 OR $min_add<0 OR $vbulletin->options['repa_nullenabled']) {
if ($vbulletin->options['repa_inputswitch']<($max_add-$min_add+1))
$repa = ' ';
Смысл вот в чём... Раньше было при желании повлиять на репутацию 2 ошибки, расположенные подряд:

PHP:
Warning: Unexpected character in input: ''' (ASCII=39) state=1 in Z:\home\localhost\www\Veda\reputation.php(389) : eval()'d code on line 6
PHP:
Parse error: syntax error, unexpected $end in Z:\home\localhost\www\Veda\reputation.php(389) : eval()'d code on line 7
Теперь, после исправления и добавления '; в конец кода, осталась 1 ошибка:

PHP:
Parse error: syntax error, unexpected $end in Z:\home\localhost\www\Veda\reputation.php(389) : eval()'d code on line 7
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
hoz
Вывод делается, блин, средствами echo $hook; в том месте, где ошибка. НЕ В КОНФИГЕ и не через $hook();

Строку добавить в конфиг, которую я говорил.

Зачем $repa=''; 2 раза?
 

hoz

Новичок
Я по ходу понял в чём косяк. У меня кодировка utf8.
Т.е. именно из-за кодировки косяк. Перекодировал вдругую кодировку xml установочный и ... всё заработало, в стандартном шаблоне.
Теперь косяк сновым шаблоном форума... но это уже другая тема и не сюда :)
Всем Спасибо за ответы!
 
Сверху