2013-08-22 32 views
5

私は2台のサーバーを持っています。私はすでに接続先の.txtファイルを持っています。PHP:FTPサーバーから.txtファイルを変数に読み込むにはどうすればよいですか?

私は.txtファイルの内容を取得し、$変数に入れる必要があります。ここに私のコードは doesntの仕事ということである。

$ftp_server = $_POST["site"]; 
$path = $_POST["path"]; 
$ftp_user_name = $_POST["username"]; 
$ftp_user_pass = $_POST["pass"]; 

// set up basic connection 
$conn_id = ftp_connect($ftp_server); 

// login with username and password 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

ftp_get($conn_id, $content,"/" . $_POST["path"] . "/" . "#" . $result["id"] 
. " - " . $result["LastName"] . ", " . $result["FirstName"] . "/" . $_POST["title"] . ".txt", FTP_ASCII); 

このコードは、FTPに接続して、私は$コンテンツと呼ばれる変数に1つのテキストファイルからコピーしftp_getを使用しました。私は変数がこのパラメータに属していないことを知っていますが、私は今すぐ売っています。私はこの.txtファイルを読む方法がわかりません。

PHPのFTP機能でこれを行う方法はありますか?

おかげ

、私はこれを試してみてください。

$fileContents = file_get_contents('ftp://username:pa‌​[email protected]/path/to/file'); 

これは、.txtファイルが通常のファイルではないことを言って550エラーが発生します。なぜこのエラーが発生するのですか? (: - Cappucci、ライアン/ queen.txt 22-08-2013 /#11 ftp://[email protected]/101Notebookバックアップ)[機能:

警告:fopenをここで再び

おかげで、私は取得しています公式のエラーです.fopen]:ストリームを開くことができませんでした:FTPサーバーは550/101Notebook Backupレポート:22-08-2013 /:/home/content/34/11614434/html/adminpdo.phpの標準ファイルではありません269

+0

'$ fileContents =' ['file_get_contents'](http://be2.php.net/file_get_contents)'( 'ftp:// username:パスワード@ホスト名/パス/ to/file') ; ' –

+0

上記を行い、私の.txtファイルを指すと、それは通常のファイルではないと言って550エラーを出します。 –

答えて

10

試してみてください。このコードはhttp://www.php.net/manual/en/function.fread.php

です。 0

エラーの場合は、ファイルのアクセス許可を777または775に変更してください。これが役立ちます。

+0

私はそれを試してもまだエラーが発生します。私は上記のエラーを投稿しました。 –

+0

上記のコードは普通の.txtファイルでうまく動作します。あなたが読むつもりのファイルがファイルではない可能性はありますか?(あなたのリンクから、それはあなたがフォルダーを読み込もうとしているようです)、それは.phpか.aspxファイルかもしれませんか?もしそうなら、その.phpファイルを取得することはできません。 –

+0

はい、それはtxtファイルですが、私が何を試しても何らかの理由で私はまだエラーが発生します。 –

3

すでにftp_connect経由の接続を開いた場合、これはおそらく最良の答えのようになります。それが動作しない場合は

$contents = file_get_contents('ftp://username:pa‌​[email protected]/path/to/file'); 

、:

ob_start(); 
$result = ftp_get($conn_id, "php://output", $file, FTP_BINARY); 
$data = ob_get_contents(); 
ob_end_clean(); 
2

file_get_contents最も簡単な解決策でありますURL wrappers enabled in PHPを持っていない可能性があります。


あなたはphp://temp (or the php://memory) streamにハンドルにftp_fgetを使用して、読んで(転送モード、パッシブモード、オフセット、制限を読み、など)をより細かく制御する必要がある場合:

$conn_id = ftp_connect('hostname'); 

ftp_login($conn_id, 'username', 'password'); 

$h = fopen('php://temp', 'r+'); 

ftp_fget($conn_id, $h, '/path/to/file', FTP_BINARY, 0); 

$fstats = fstat($h); 
fseek($h, 0); 
$contents = fread($h, $fstats['size']); 

fclose($h); 
ftp_close($conn_id); 

(追加エラーハンドリング)

関連する問題