Не работает eval()

Tymur

Новичок
Не работает eval()

Под windows при значительных объёмах кода для исполнения не работает eval(). Кто -нибудь знает как можно то исправить ?
 

Tymur

Новичок
$SOURCE = '<?echo 1;?>';
eval($SOURCE); - работает

когда $SOURCE большой
eval($SOURCE); - неработает
 

svetasmirnova

маленький монстрик
Не поняла зачем <? и ?>
и пример большого $SOURCE в студию
А также версию PHP
 

Фанат

oncle terrible
Команда форума
svetasmirnova
опять ты за старое.

ну посмотри соседний топик.
ему евал этот нужен, как корове седло.

Спросить надо: "Откуда, мил человек, у тебя этот евал взялся?". И сказать, чтобы отнёс туда, где взял, и больше не трогал.
 

Tymur

Новичок
в движке используется, никуда не денешься - надо с ним работать...

версия пхп 4.3.10

разницы нет, что в $SOURCE, но если так настаиваете, то вот

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<?php
require_once "sys/define.php";


include "sys/lib/templates.php";
include "sys/lib/MYSQLManager.php";
include "sys/PageManagerBase.php";
include "sys/lib/PageManager4.php";

$_p = $_REQUEST['p'];
$page_title = '??????? ??????? ???????';

if ( $_p )
{

require_once ( $_SERVER['DOCUMENT_ROOT'].'/sys/include/inc_manager.inc.php' );
$inc = new inc_manager ($_SERVER['DOCUMENT_ROOT']);
$inc->inc("products");
$db = new db_interface ( constant("DBHostName"), constant("DBUserName"), constant("DBPassword"), constant("DBName") );

$_page = array ( );

$__p = addslashes( $_p );
$query = '
SELECT
*
FROM
`Pages`
WHERE
`id` = "' . $__p . '" OR ( NOT ISNULL(`ShortName`) AND `ShortName` LIKE "' . $__p . '" )
GROUP BY
`id`
';
$rs = $db->query($query);
$_page['title'] = empty( $rs[0]['page_title'] ) ? $rs[0]['Title'] : $rs[0]['page_title'];
$_page['description'] = ( $rs[0]['description'] ) ? $rs[0]['description'] : $_page['title'];
$_page['keyword'] = ( $rs[0]['keyword'] ) ? $rs[0]['keyword'] : preg_replace( '~\.| ~', ', ', $_page['title'] ) . ', ' . $_page['title'];

unset ( $db );
unset ( $inc );
}
else
{
$_page['description'] = '' . $page_title;
$_page['keyword'] = preg_replace( '~\.| ~', ', ', $page_title ) . ', ' . $page_title;
}

?>

<html>
<META name="Description" content="<?php print $_page['description'] . ' - ' . $page_title; ?>" />
<META name="Keywords" content="<?php print $_page['keyword']; ?>" />
<title><?php
print ( $_page['title'] ) ? $_page['title'] . ' - ' : '';
print $page_title;
?></title>

<script language="JavaScript">
function menu(a) {
_t = document.getElementById('tab_'+a);
_s = document.getElementById('sel_'+a);

for (i=1; i<7; i++) {
if (i != a) {
t = document.getElementById('tab_'+i);
t.style.display = 'none';
s = document.getElementById('sel_'+i);
s.style.display = 'none';
}
}

_t.style.display = 'block';
_s.style.display = 'block';
}
</script>

</head>

<body>

<div id="main1">
<div id="main">

<!--header begin-->
<? template(1, "header") ?>
<!--header end-->

<!--menu start-->
<? template(4, "MainMenu") ?>
<!--menu end-->

<!--topmenu start-->
<? template(2, "MainMenu") ?>
<!--topmenu end-->

<!--main content-->
<table cellpadding="0" cellspacing="0" id="mid" border=0>
<tr><td valign="top">

<table cellpadding="0" cellspacing="0" border=0 width=100%>
<tr>

<!-- 2 ??????? ????? -->
<td valign="top">
<!--<? template(53, "text") ?>-->
<!-- ?????? ? ??????? ????? -->
<? template(5, "DynComponent") ?>
</td>
<td valign="top">
<? template(6, "DynComponent") ?>

</td>
</tr><tr><td valign="top">

<? template(52, "DynComponent") ?>
</td><td valign="top">
<? template(62, "DynComponent") ?>

</td></tr></table>

</td>
<td valign="top" id="col3">
<!-- ????????? ????? -->
<? template(8, "DynComponent") ?>

</td>
<td valign="top">

<!-- ?????? -->
<? template(7, "DynComponent") ?>

<!-- ????? -->
<? template(10, "DynComponent") ?>


</td>
</tr>
</table>
<!--main content-->

<!--copyrights-->
<? template(3, "footer") ?>

</div>
</div>

</body>
</html>
 

svetasmirnova

маленький монстрик
Фанат
Ой! Опять я облажалась :( Фееричный, как ты говоришь, топик.
Tymur
ты знаешь, что с "большим" $SOURCE eval не работает: ничего удивительного нет. Удивительно, что он с "маленьким" у тебя работал. Читай внимательно [m]eval[/m]. Как я поняла из соседнего топика: ищи другой движок.
 

Фанат

oncle terrible
Команда форума
я сильно сомневаюсь, что сам движок требует для своей работы евал.
думаю, проблема не в движке, а в том, что кдиент не знает другого способа заставить его работать
 

Tymur

Новичок
проблема возникает только на винде, на юниксе всё работает !!!

-~{}~ 28.08.05 19:04:

вот у чела таже ошибка, только ответа на неё тоже нет...
http://phpclub.ru/talk/showthread.php?postid=467711#post467711
 

svetasmirnova

маленький монстрик
Почему ответа нет? Ответ есть: http://phpclub.ru/talk/showthread.php?postid=467720#post467720
 

Tymur

Новичок
Фанат
Не использовать eval в данном случае значит переписать движок, а мне это нахрен не нужно. Мне надо переделать небольшую часть и забыть про это.

-~{}~ 28.08.05 19:08:

svetasmirnova
в данном случае это не решение проблемы
 

svetasmirnova

маленький монстрик
Вообще использование eval - это не очень хорошая практика и этого нужно избегать.

-~{}~ 28.08.05 19:11:

Tymur
так движок использует eval или Фанат прав?
 

Фанат

oncle terrible
Команда форума
Tymur
еслми ты такой умный, и лучше нас знаешь, что тебе нужно, а что не нужно - зачем тогда нас о чём-то спрашиваешь?
 

Tymur

Новичок
svetasmirnova
По собственной воли никогда бы и не использовал...но есть очумелые ручки которые наворотили такой код

-~{}~ 28.08.05 19:18:

Фанат
я спрашиваю о решении конкретной проблемы. То решение, которые вы предлагате очевидное, но в данной ситуации не подходит.
Я спрашиваю, то чего не знаю, а ты говоришь мне про другое...
 

svetasmirnova

маленький монстрик
Я тебя не об этом спрашивала. Я спрашиваю, это в движке используется eval, а ты только пытаешься его поставить как в README написано? Или это ты eval вставил?
 

Tymur

Новичок
Да, eval используется в движке. Это рабочий проект - установлен на юниксе и всё работает. Проблема возникает в винде
 

svetasmirnova

маленький монстрик
Но судя по соседнему топику, тебе дешевле поменять движок.
И у меня в UNIX не работает следующее: php -r "eval('<?php echo 1; ?>');" Так что я очень удивляюсь, как у тебя что-то работает.
Посмотри ещё http://ru3.php.net/manual/ru/function.eval.php#55857
 

Tymur

Новичок
svetasmirnova
ну это я просто написал...нету там <?....?>
а чё за соседний топик ?
 
Сверху