我有一个名为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"));
现在脚本(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()
只打开该脚本,而不是执行它。然后输出将是一个不清晰的图像:
当我通过编辑器打开该图像时,它包含MakeAvatar.php
(所有代码)的内容。所以似乎问题是传递。
那么,我该如何执行该文件?
. . . file_get_contents("how can I execute MakeAvatar.php in here ?")
注意:我无法更改MakeAvatar.php
的内容。另外我无法更改其目录(我的意思是我不能把它放到root中)。
答案 0 :(得分:0)
我的目的是一个肮脏的解决方案:
exec("php /path/to/your/MakeAvatar.php $id");
答案 1 :(得分:0)
因此,根据评论,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);
请注意,这是未经测试的,但我认为应该为您提供可行的解决方案的基础。