使用curl在本地获取.php文件

时间:2013-01-23 20:27:52

标签: php curl

我在PHP中使用curl来返回PHP文件的内容。我想在本地执行此操作,因为我将在同一脚本中访问多个PHP文件,因此直接打开文件会更快。

但是,我希望能够将参数推送到PHP文件中(将它们完全视为Web上的PHP文件,但在本地抓取它们),因为我想将参数推送到脚本中,这将生成额外的动态内容当我抓住它。

如果我在本地调用文件,这可以吗?我已尝试使用file:///,直接调用该文件,但这不会运行这些文件中的PHP代码。

有什么想法吗?

修改

对于这种困惑感到抱歉: - 目前正在网络服务器上运行,我目前正在调用http://(而不是file:///),因此可以执行这些文件中包含的PHP。但是,我发现这很慢,因为我正在生成多个curl()调用,这些调用本质上是多次调用服务器本身。

2 个答案:

答案 0 :(得分:5)

你可以这样做:

function php_to_string($php_file, $new_GET = false, $new_POST = false) {
    // replacing $_GET, $_POST if necessary
    if($new_GET) {
        $old_GET = $_GET;            
        $_GET = $new_GET;
    }
    if($new_POST) {
        $old_POST = $_POST;            
        $_POST = $new_POST;
    }
    ob_start();
    include($php_file);
    // restoring $_GET, $_POST if necessary
    if(isset($old_GET)) {
       $_GET = $old_GET;
    }
    if(isset($old_POST)) {
       $_POST = $old_POST;
    }
    return ob_get_clean();
}

$content = php_to_string('my_file.php');
$content = php_to_string('my_file.php', Array('id'=>23)); // http://localhost/my_fie.php?id=23

但请注意,它可能会覆盖您现有的变量,导致错误(例如重复定义)等等,因此您可以使用sandbox solution

答案 1 :(得分:1)

我相信您希望在本地计算机上设置网络服务器(例如Apache),以便转到http://localhost/script.php?param1=foo&param2=bar而不是file:///path/to/script.php。不同之处在于当您执行file:///时,文件只是打开,但如果您通过Apache,则脚本实际上是已执行

至于将参数传递给脚本,请使用查询字符串(例如?param1=foo等)。

我不知道你为什么要做你正在做的事情,但希望这可以帮助你做到这一点。