执行cURL查询返回的PHP代码

执行cURL查询返回的PHP代码,php,curl,Php,Curl,我试图执行cURL查询返回的代码 以下代码查询“我的Web服务器”上的页面: $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, "http://web.com/foo.php"); curl_setopt ($ch, CURLOPT_HEADER, 0); $res = curl_exec ($ch); curl_close ($ch); echo $res; 我只想修改foo.php中的代码。 我曾尝试使用eval()命令在foo.PHP中返

我试图执行cURL查询返回的代码

以下代码查询“我的Web服务器”上的页面:

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://web.com/foo.php");
curl_setopt ($ch, CURLOPT_HEADER, 0);
$res = curl_exec ($ch);
curl_close ($ch);
echo $res;
我只想修改foo.php中的代码。 我曾尝试使用eval()命令在foo.PHP中返回PHP代码作为结果,但似乎不起作用

有什么想法吗


编辑:伙计们,我这样做不是为了一个公共网站。这是一个私人项目,我将是唯一的用户。我知道这是一个巨大的安全问题,我永远不会做这样的事情,在互联网上直播

注意
eval
不需要开头的
注意
eval
不需要开头的
免责声明:这是一个非常糟糕的安全想法,你不应该这样做

也就是说

  • 确保php.ini中允许使用
    allow\u url\u fopen
    选项,或者使用
  • 确保web.com实际返回的是PHP代码,而不是执行PHP代码并返回输出-这不会给您提供任何有用的运行信息(除非PHP代码生成其他PHP代码作为输出,但这样您就真的太麻烦了)
  • 然后只需
    include“http://web.com/foo.php“

现在,重申一下,除非你真的非常确定自己,或者你真的很喜欢你的网站被黑客攻击,否则不要这样做。

免责声明:这是一个非常糟糕的安全想法,你不应该这样做

也就是说

  • 确保php.ini中允许使用
    allow\u url\u fopen
    选项,或者使用
  • 确保web.com实际返回的是PHP代码,而不是执行PHP代码并返回输出-这不会给您提供任何有用的运行信息(除非PHP代码生成其他PHP代码作为输出,但这样您就真的太麻烦了)
  • 然后只需
    include“http://web.com/foo.php“

现在,重申一下,除非你真的对自己很有信心,或者你真的很喜欢自己的网站被黑客攻击,否则不要这样做。

免责声明:这是一个可怕的想法。我强烈建议您使用其他方法

我猜你服务器上的文件正在被他们所在的服务器解释,所以你得到了PHP解析响应。尝试将它们重命名为其他名称,如
.phtml
。或者在远程服务器上关闭PHP。那么这应该只是一个问题:

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://web.com/foo.phtml");
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec ($ch);
curl_close ($ch);

$parsed = eval($res);

// echo or do whatever with $parsed

但正如我在免责声明中所说,每个回答这个问题的人都说。。。这是一种安全风险,甚至更高的风险有各种各样的陷阱。如果你解释为什么你想这样做,我们可能会找到一个更好的解决方案,不会让Jon Skeet哭。

免责声明:这是一个可怕的想法。我强烈建议您使用其他方法

我猜你服务器上的文件正在被他们所在的服务器解释,所以你得到了PHP解析响应。尝试将它们重命名为其他名称,如
.phtml
。或者在远程服务器上关闭PHP。那么这应该只是一个问题:

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "http://web.com/foo.phtml");
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec ($ch);
curl_close ($ch);

$parsed = eval($res);

// echo or do whatever with $parsed

但正如我在免责声明中所说,每个回答这个问题的人都说。。。这是一种安全风险,甚至更高的风险有各种各样的陷阱。如果你解释一下为什么你想这么做,我们可能会找到一个更好的解决方案,不会让Jon Skeet哭。

需要更多信息
eval
是执行作为字符串接收的代码的方法,到底是什么“似乎不起作用”?还有:不要这样做
eval
evil
,诸如此类……如果有任何包含的/必需的脚本,这难道不会严重失败吗。。。对数据库、外部类的引用。。。有什么感兴趣的吗即使它真的起作用了,上帝也只知道现在在你的服务器上运行的代码中可能有什么啊!Re“我将是唯一的用户”:这没关系,你只是不做而已它打开一个攻击向量(一个巨大的)进入你的系统。即使有人利用这个向量的机会很小,但这是一个坏习惯。尤其是私人项目是做好这件事的绝佳机会。出于政治原因,专业程序员经常被迫使用次优解决方案,如果不需要的话,不要自己去那里<代码>
:)需要更多信息
eval
是执行作为字符串接收的代码的方法,到底是什么“似乎不起作用”?还有:不要这样做
eval
evil
,诸如此类……如果有任何包含的/必需的脚本,这难道不会严重失败吗。。。对数据库、外部类的引用。。。有什么感兴趣的吗即使它真的起作用了,上帝也只知道现在在你的服务器上运行的代码中可能有什么啊!Re“我将是唯一的用户”:这没关系,你只是不做而已它打开一个攻击向量(一个巨大的)进入你的系统。即使有人利用这个向量的机会很小,但这是一个坏习惯。尤其是私人项目是做好这件事的绝佳机会。出于政治原因,专业程序员经常被迫使用次优解决方案,如果不需要的话,不要自己去那里<代码>
:)这将需要我去掉上面的cUrl代码并使用include。我的目标是只通过cUrl(而不是include)实现这一点为什么?如果你决定要不安全,那么用这种方式不安全要比用curl不安全容易得多。这两种方法都是一个坏主意,而这一种在安全性方面并不差,但在实现方面更容易。这需要我去掉上面的cUrl代码,改用include。我的目标是只通过cUrl(而不是include)实现这一点为什么?如果你决定要不安全,那么用这种方式不安全要比用curl不安全容易得多。这两种方法都是个坏主意,而这一种也不坏