2010-01-26 77 views
3

我需要使用php寫入位於不同服務器上的文件。PHP寫入不同服務器上的文件

因此,我從一臺服務器上的表單獲取用戶數據,然後需要寫入位於另一臺服務器上的文本文件。我需要認證還是類似的東西?

我需要寫入的第二臺服務器是Windows服務器。這是一個問題嗎?

謝謝!

+1

沒有「.Net服務器」這樣的東西。 – SLaks 2010-01-26 15:21:04

+0

對不起。這是一個窗口框,我認爲這是正確的術語。 – Joe 2010-01-26 15:22:42

回答

1

無論您是寫給任何一臺服務器,都沒有問題,您可以使用PHP FTP完成此操作。

確保您具有在服務器上寫入文件的正確權限,否則您的代碼將無法正常工作,並且會導致拒絕訪問錯誤。

+0

那麼我會用ftp_nb_fget嗎? – Joe 2010-01-26 15:27:39

+0

您可以使用該功能,但我想知道是否使用它來訪問FTP上不存在的文件,如果它會爲您創建一個文件。 – 2010-01-26 15:46:29

+0

該文件將始終存在。我只需要打開它,寫信給它,然後關閉它。我應該使用哪個php ftp函數? – Joe 2010-01-26 15:53:08

0

用PHP你可以做一個FTP連接和寫入使用FTP的.NET服務器上的文件

認證可以通過FTP來完成

的信息,你如何能做到這一點 http://nl.php.net/ftp

你在第二臺服務器上運行ftp嗎?

你也可以做一個AJAX調用Seconde系列服務器與數據

在你把該文件與內容寫了一個腳本Seconde系列服務器,但您必須將Seconde系列服務器上的腳本運行HTTP語言如php/asp

+0

那麼我會使用ftp_nb_fget? – Joe 2010-01-26 15:26:55

+0

這取決於你打算做什麼,你可以使用'ftp_nb_fget'從FTP服務器下載一個文件,然後寫入它 – 2010-01-26 15:29:22

+0

是的,如果你想從PHP服務器上的文件到Windows服務器,那麼你需要ftp_nb_fput如果你將從Windows服務器下載一個文件,然後使用fget方法 – Marco 2010-01-26 16:02:50

3

您需要在遠程(Windows)計算機上接受文件並存儲它的某些服務。有很多方法可以做到這一點:

  • Windows共享(如果第一個服務器是Linux,你可以通過Samba安裝或使用smbclient的推文件,如果它的Windows,只是爲它分配一個盤符。像Z:和複製文件存在)
  • FTP(運行某些FTP服務器一樣FileZilla中,並使用cURL或一些其他PHP庫上傳)
  • HTTP(啓動Apache + PHP或IIS/.NET或任何在Windows上的webserver並編寫一個小程序,它將接受POST數據和存儲它成文件。您可以使用捲曲或其他一些圖書館使用HTTP POST發送從PHP文件)
  • SSH(可以運行OpenSSH server和複製與SCP文件)

我使用HTTP的方法和它的工作原理相當好(因爲我已經在遠程機器上運行了Apache),但其他任何選項都可行。

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,並且它可以正常運行共享服務器。

+0

感謝您的不錯的選擇。兩個問題......你說「你的服務器,你需要的文件正在出去,抓住文件本身。」所以我會把上面的代碼放在服務器上,我想要文件最終?該文件需要結束的服務器是一個窗口框,因此沒有安裝php。問題2 ...上面的setopt行:這些是傳輸文本文件的正確設置嗎?謝謝! – Joe 2010-01-26 18:42:46

+0

那就對了。把它看作是把txt文件下載到你想要的機器上,而不是上傳到你想要的機器上...... 我相信你可以用基於Windows的語言做類似的事情。或者使用WAMP,但是這會使其複雜化。 是在SETOPT行只是: 轉移 是否應該使用頁眉或不(我認爲) 二進制(所以任何類型的文件)的傳輸類型的 返回(錯誤)響應的網址 – ian 2010-01-27 10:07:44

相關問題