2012-05-04 82 views
-1

我試圖編輯外部文件。我已經改變文件的chmods(666),我可以使用的file_get_contents讀取該文件,但我無法把內容:使用php編輯外部服務器上的文件

[function.file-把-內容]:未能打開流:HTTP包裝不支持可寫連接

我怎麼能解決這個問題?

有沒有辦法在外部服務器上編輯文件?也許你能提出更好的方法

+1

你想要什麼樣的文件來改變? –

+0

php文件和txt文件 - 試圖更改兩個並失敗兩次 – andrewpo

+1

你想更改外部文件,然後將其存儲在該外部服務器?或者你想更改文件並將更改後的版本存儲在自己的服務器上? –

回答

1

CHMOD外部服務器0777的文件(S),那麼他們可以在外部改變:

<?php 
chmod("/somedir/somefile", 0777); 
?> 

然後使用編輯:

<?php 
$file = fopen ("ftp://login:[email protected]", "w"); 

if (!$file) { 
    echo "<p>Unable to open remote file for writing.\n"; 
    exit; 
} 

/* Write the data here. */ 
fwrite ($file, "blablabla"); 
fclose ($file); 
?> 

要意識到這可能會造成重大的安全風險。

+0

我有打開問題 - 不知道如何打開文件 - 「ftp:// loginpassword @ server」 - 它看起來不正確,「ftp://[email protected]/file.txt」也是如此。 – andrewpo

1

檢查的http://us.php.net/manual/en/function.file-put-contents.php上有URL文件規範文件寫入一些線索的「注意事項」一節。 tl; dr:不如通過file_get_contents()讀取遠程文件可能會讓你相信。

這是一個壞主意,不過,從安全角度來看。一對夫婦稍微好點子:

  1. 檢出ssh2_scp_send並scp文件的本地更改副本到遠程服務器。這可能涉及通過您的操作系統供應商安裝SSH2 PECL擴展(例如,將它們安裝在適用於Debian型Linux機器的'apt',適用於Red Hat等的'yum'或類似軟件中)或從PECL安裝。

  2. 發佈到遠程服務器上的腳本,並使其更新文件爲您服務。

+1

我會用你的2.建議 - 創建一個本地腳本與帖子,它會將文件從管理服務器複製到本地 – andrewpo

+0

太棒了!我會欣賞的upvote或任何它是接受我的答案 - 這是我在StackOverflow的第一個答案,我試圖建立代表:) – taiganaut

相關問題