I have two servers. I already have a .txt file in the one I’m connecting to.
I need to get the .txt file contents and put them into a $ variable. Here is my code that
$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);
This code connects to the FTP and I used the ftp_get to copy from one text file to a variable called $content. I know a variable doesnt belong in this parameter, but I’m sold right now. I have no idea how to read this .txt file.
Is there a way to do this with the PHP FTP functions?
Now, when I try this:
$fileContents = file_get_contents('ftp://username:pa[email protected]/path/to/file');
It gives a 550 error saying that the .txt file is not a regular file. Why am I getting this error?
Here is the official error I’m getting:
Warning: fopen(ftp://…@goldenbooklet.com/101Notebook Backup: 22-08-2013/#11 – Cappucci, Ryan/queen.txt) [function.fopen]: failed to open stream: FTP server reports 550 /101Notebook Backup: 22-08-2013/: not a regular file in /home/content/34/11614434/html/adminpdo.php on line 269
file_get_contents is the easiest solution:
$contents = file_get_contents('ftp://username:pa[email protected]/path/to/file');
If it does not work, it’s probably because you do not have URL wrappers enabled in PHP.
$conn_id = ftp_connect('hostname'); ftp_login($conn_id, 'username', 'password'); ftp_pasv($conn_id, true); $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);
(add error handling)
Try this, this code is from http://www.php.net/manual/en/function.fread.php
<? $filename = "ftp://username:pa[email protected]/path/to/file"; $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); echo $contents; ?>
If error, please change the file permission to 777 or 775. Hope this may help.
If you’ve already opened a connection via ftp_connect, this would probably be the best answer:
ob_start(); $result = ftp_get($conn_id, "php://output", $file, FTP_BINARY); $data = ob_get_contents(); ob_end_clean();