If the code is the same, there appears to be a difference between:
include \'external.php\';
and
eval(\'?>\' . file_get_conten
Only eval('?>' . file_get_contents('external.php')); variant is correct replacement for include.
See tests:
',
'',
'some text',
);
$tempFile = tempnam('/tmp', 'test_');
print "\r\n" . "Include:" . "\r\n";
foreach ($includes as $include)
{
file_put_contents($tempFile, $include);
var_dump(include $tempFile);
}
unlink($tempFile);
print "\r\n" . "Eval 1:" . "\r\n";
foreach ($includes as $include)
var_dump(eval('?>' . $include . '' . $include));
print "\r\n" . "Eval 3:" . "\r\n";
foreach ($includes as $include)
var_dump(eval('?>' . $include . '
Output:
Include:
some textint(1)
some textint(1)
some textint(1)
some text