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

Для начала понять, как вообще выполняется PHP код, который откуда-то приходит или находится в переменной... Давайте посмотрим на этот пример:

<?php
ini_set('display_errors',1);//отображаем ошибки
$code = '<?php
echo 123;
';
$code=str_ireplace(['<?','<?php'],'',$code);
function _readphp_eval($code) {
ob_start();
print eval("?>". $code);
$output = ob_get_contents();
ob_end_clean();
return $output;
}
print _readphp_eval($code);

Как Вы можете видеть, результатом исполнения данного кода будет «123», хотя этот код написан в переменной. Но выполниться он только в том случае, если в настройках php.ini (или в момент выполнения скрипта) включена поддержка функции eval.

Теперь, для того, чтобы пример оказался весьма реальным, мы можем сделать так:

  1. Расположить файл text.txt на каком-либо сервере с https.
  2. Взять его содержимое и выполнить на другом сервере...

Файл text.txt (может быть и PHP, но если PHP, то он, соответственно, должен отдать PHP код, который мы выполним...).

<?php echo 123456;//просто текстовый (неисполняемый) файл

Файл we-hawe-test.php: // PHP (исполняемый) файл

<?php
ini_set('display_errors',1);

$code=file_get_contents('https://dev2.inverser.pro/test.txt');
//var_dump($code);//string(20) "<?php echo 123456;"
/*$code = '<?php
echo 123;
';*/
//$code=str_ireplace(['<?','<?php'],'',$code);
function _readphp_eval($code) {
ob_start();
print eval("?>". $code);
$output = ob_get_contents();
ob_end_clean();
return $output;
}
print _readphp_eval($code);

Результат выполнения будет таким: 123456.