Подтвердить что ты не робот

Как я могу выполнить script вне корневого каталога другим?

У меня есть script с именем MakeAvatar.php. И когда я передаю ему аргумент (как метод GET), он создает изображение (аватар) на основе этого аргумента:

http://example.com/MakeAvatar.php?id=12345
// Output: 1234.jpg

И я могу просто сохранить это изображение следующим образом:

file_put_contents("../img/avatar/".$id.".jpg", file_get_contents("http://localhost/MakeAvatar.php?id=$id"));

Теперь, когда script (MakeAvatar.php) находится вне корневого каталога:

\out
    \MakeAvatar.php
\root
    \include
        \register.php
    \img
        \avatar

И я не могу открыть MakeAvatar как http-запрос в register.php. Я просто могу получить к нему доступ по этому пути:

$_GET['id'] = $id; // passing
file_put_contents("../img/avatar/".$id.".jpg", file_get_contents("../out/MakeAvatar.php"));

Но код выше не работает. Потому что file_get_contents() просто открывает этот script, а не выполняет его. Тогда результат будет нечетким:

введите описание изображения здесь

Также, когда я открываю это изображение редактором, он содержит содержимое MakeAvatar.php (все его коды). Таким образом, кажется, что проблема проходит.

Ну, как я могу выполнить этот файл?

. . . file_get_contents("how can I execute MakeAvatar.php in here ?")

Примечание. Я не могу изменить содержимое MakeAvatar.php. Также я не могу изменить его каталог (я имею в виду, что я не могу поместить его в root).

4b9b3361

Ответ 1

Я использую грязное решение:

exec("php /path/to/your/MakeAvatar.php $id");

Ответ 2

Итак, переходя к комментариям, MakeAvatar.php потребовал переменную $_GET и выводил данные изображения непосредственно в stdOut. Таким образом, я бы предположил, что следующее может быть сделано для работы (возможно с модификацией).

$_GET['id'] = $id; // passing

ob_start();
require('../out/MakeAvatar.php');
$image = ob_get_contents();
ob_end_clean();

file_put_contents("../img/avatar/".$id.".jpg",$image);

Обратите внимание, что это не проверено, но я думаю, что это должно послужить основой для работоспособного решения.