PHP写入不同服务器上的文件

时间:2010-01-26 15:20:10

标签: php

我需要使用php写入位于不同服务器上的文件。

因此,我从一个服务器上的表单获取用户数据,然后需要写入位于另一个服务器上的文本文件。我需要进行身份验证还是类似的事情?

我需要写的第二台服务器是Windows服务器。这是一个问题吗?

谢谢!

5 个答案:

答案 0 :(得分:3)

您需要在远程(Windows)计算机上提供一些接受该文件并存储它的服务。有很多方法可以做到这一点:

  • Windows共享(如果您的第一台服务器是Linux,您可以通过Samba安装它或使用smbclient来推送文件。如果是Windows,只需为它分配一个字母,如Z:并复制文件有)
  • FTP (运行一些FTP服务器,如FileZilla,并使用cURL或其他一些PHP库上传)
  • HTTP (启动Apache + PHP或IIS / .Net或Windows上的任何网络服务器并编写一个小程序,接受POST数据并将其存储到文件中。您可以使用cURL或其他一些库使用HTTP POST从PHP发送文件)
  • SSH (您可以运行OpenSSH server并使用scp复制该文件)

我使用HTTP方法并且它工作得很好(因为我已经在远程计算机上运行了Apache),但是任何其他选项都是可行的。

答案 1 :(得分:2)

我不知道你是否有这种可能性,但......

而不是尝试更新另一台服务器上的文件,特别是像txt文件那样的简单文件,我会将当前文件放在服务器1上,然后我会使用cron作业设置为cURL将它从服务器2复制到服务器2每隔x分钟复制一次文件。

    $ch = curl_init(); 

    // set URL and other appropriate options 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

    set_time_limit(3600); # 5 minutes for PHP 
    curl_setopt($ch, CURLOPT_TIMEOUT, 3600); # and also for CURL 

    $outfile = fopen( $dirname, 'wb'); 
    curl_setopt($ch, CURLOPT_FILE, $outfile); 

    // grab file from URL 
    $response = curl_exec($ch); 
    fclose($outfile); 

    // close CURL resource, and free up system resources 
    curl_close($ch); 

`

我这样做只是因为您不必处理为更新设置FTP帐户或类似的事情。您需要该文件的服务器正在出去并为自己抓取文件。

我使用上面的脚本从各种博客收集mp3。有时它们将是100-200MB,并且在共享服务器上运行良好。

答案 2 :(得分:1)

无论您是要写入任何一台服务器都没有问题,您可以使用PHP FTP完成此操作。

确保您具有在服务器上写入文件的正确权限,否则您的代码将无法正常运行并获得访问被拒绝错误。

答案 3 :(得分:0)

使用php,您可以建立ftp连接并使用ftp

在.net服务器上写入文件

身份验证可以通过ftp

完成

获取有关如何执行此操作的信息 http://nl.php.net/ftp

你在第二台服务器上运行ftp吗?

您还可以使用数据

对seconde服务器执行ajax调用

在seconde服务器上放置一个用内容写入文件的脚本,但是你必须使用像php / asp这样的脚本语言在seconde服务器上运行http

答案 4 :(得分:0)

如果要使用SFTP,可以使用cURL进行。 Stack Overflow post