如何使用php动态下载文件到服务器

时间:2014-10-29 16:11:05

标签: php curl installation

我很想知道是否有办法从SERVER A下载文件并将其放在SERVER B上,其中SERVER A能够动态更改下载文件中的内容。

背后的一点是,我正在尝试为工具构建错误处理程序,当工具所需的部分文件丢失时将使用该工具。这就像WordPress意识到您的网站上缺少一个文件,并且您的网站向wordpress.com发送请求以获取丢失的文件:

(服务器B): PHP在include

上吐出错误

(服务器B): PHP尝试通过说服务器B缺少FILE AFILE B,{{1}来获取来自服务器A的丢失文件的文件安装程序等等...

对于上面的步骤,我认为可以使用此方法完成:

FILE C

注意(仅当您不理解上述代码的作用时):以上代码应该告诉SERVER A的PHP文件mi_inst_installer.php吐输出数据(安装程序)并将其放入SERVER B上的文件missing_installer.php

(服务器B): PHP使用新获得的missing_installer.php安装丢失的文件

关于该怎么做的任何想法?

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

$mycontent = file_get_contents('http://SERVER_A.com/mi_inst_installer.php?query-asking-for-missing-item(s)=missin-item');
file_put_contents('missing_installer.php', $mycontent));

首先需要(使用file_get_contents())获取下载文件的内容,然后先将其放入file_put_contents()的第二个参数中。

答案 1 :(得分:2)

您还可以在服务器A侧使用cURL进行动态处理:

function curl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    $return = curl_exec($ch);
    curl_close ($ch);
    return $return;
}
file_put_contents('missing_installer.php', curl('http://SERVER_A.com/mi_inst_installer.php?query-asking-for-missing-item(s)=missin-item'));

Jacky的回答只有在allow_url_fopen设置为1时才有效。

还可以使用PHP's reference进行cURL传输选项(允许您自定义发送和/或返回请求的方式)。另外,习惯cURL的工作原理是个好主意;见the other PHP reference (client URL library)