2011-02-28 45 views
0

我無法讓file_put_contents()工作將解碼後的電子郵件附件上傳爲我的服務器上的文件。這是基本的腳本:file_put_contents問題 - 「沒有這樣的文件或目錄」

$user = "user"; 
$pass = "pass"; 
$host = "ftp://mydomain.com"; 

$content = 'hello'; 
$file = 'public_html/mydomain.com/files/readme.txt'; 

$options = array('ftp' => array('overwrite' => true)); 
$stream = stream_context_create($options); 

$hostname = $user . ":" . $pass . "@" . $host . "/" . $file; 

file_put_contents($hostname, $content, 0, $stream); 

我已經試過這各種製劑,包括在不同的FTP用戶記錄,不管我做什麼,我得到一個「沒有這樣的文件或目錄」錯誤。我的服務器具有「/public_html/mydomain.com/」文件結構的典型結構,但這似乎不起作用。然而,當我嘗試使用我們的ftp_put()時,它似乎使連接和找到目錄就好 - 但我不能使用ftp_put(),因爲我沒有上傳本地文件,而是一個字符串到遠程文件。

下面是我用的代碼:

$user = "user"; 
$pass = "pass"; 
$host = "mydomain.com"; 

$ftp_path = '/public_html/files'; 

$content = 'localfile.txt' 

$conn_id = ftp_connect($host, 21) or die ("Cannot connect to host"); 

ftp_pasv($conn_id, true); 
ftp_login($conn_id, $user, $pass) or die("Cannot login"); 
// perform file upload 
ftp_chdir($conn_id, '/public_html/mydomain.com/files/'); 
$upload = ftp_put($conn_id, $ftp_path, $content, FTP_BINARY); 
if($upload) { $ftpsucc=1; } else { $ftpsucc=0; } 

ftp_close($conn_id); 

我意識到,我可能失去了一些東西死的簡單,任何幫助嗎?

回答

3

您有這行代碼:

$file = 'public_html/mydomain.com/files/readme.txt';

這讓我假設:要麼你的工作腳本之外的Web根目錄,或編碼是錯誤的...你確定文件的位置是正確的?

2

,想到的唯一的事情是這樣的:

$user = "user"; 
$pass = "pass"; 
$host = "ftp://mydomain.com"; 

$content = 'hello'; 
$file = 'public_html/mydomain.com/files/readme.txt'; 

$options = array('ftp' => array('overwrite' => true)); 
$stream = stream_context_create($options); 

$hostname = $user . ":" . $pass . "@" . $host . "/" . $file; 

file_put_contents($hostname, $content, 0, $stream); 

或者更具體地說,這條線:

$hostname = $user . ":" . $pass . "@" . $host . "/" . $file; 

會導致類似

用戶的URL:通@ftp://host.com/file

雖然它應該是

ftp://User:[email protected]/file

所以我將其更改爲

$protocol = "ftp://"; 
$user = "user"; 
$pass = "pass"; 
$host = "mydomain.com"; 

$content = 'hello'; 
$file = 'public_html/mydomain.com/files/readme.txt'; 

$options = array('ftp' => array('overwrite' => true)); 
$stream = stream_context_create($options); 

$hostname = $protocol . $user . ":" . $pass . "@" . $host . "/" . $file; 

file_put_contents($hostname, $content, 0, $stream); 

這也會給你迴旋餘地以後,如果你需要使用不同的協議。

相關問題