我有两台服务器。我已经在我正在连接的文件中有一个.txt文件。
我需要获取.txt文件内容并将它们放入$变量中。这是我的代码 不起作用:
$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,我使用ftp_get从一个文本文件复制到一个名为$ content的变量。我知道变量不属于这个参数,但我现在卖了。我不知道如何阅读这个.txt文件。
有没有办法用PHP FTP函数做到这一点?
由于
现在,当我尝试这个时:
$fileContents = file_get_contents('ftp://username:password@hostname/path/to/file');
它给出了一个550错误,说明.txt文件不是常规文件。为什么我会收到此错误?
再次感谢
以下是我收到的官方错误:
警告:fopen(ftp://...@goldenbooklet.com/101Notebook备份:22-08-2013 /#11 - Cappucci,Ryan / queen.txt)[function.fopen]:无法打开流:FTP服务器报告550 / 101Notebook Backup: 22-08-2013 /:不是第269行/home/content/34/11614434/html/adminpdo.php中的常规文件
答案 0 :(得分:9)
试试这个,此代码来自http://www.php.net/manual/en/function.fread.php
<?
$filename = "ftp://username:password@hostname/path/to/file";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
echo $contents;
?>
如果错误,请将文件权限更改为777或775.希望这可能有所帮助。
答案 1 :(得分:7)
如果您已经通过ftp_connect打开了连接,这可能是最好的答案:
ob_start();
$result = ftp_get($conn_id, "php://output", $file, FTP_BINARY);
$data = ob_get_contents();
ob_end_clean();
答案 2 :(得分:6)
file_get_contents
是最简单的解决方案:
$contents = file_get_contents('ftp://username:password@hostname/path/to/file');
如果它不起作用,可能是因为你没有URL wrappers enabled in PHP。
如果您需要更好地控制读数(传输模式,被动模式,偏移,读数限制等),请使用带ftp_fget
句柄的php://temp
(or the php://memory
) stream:
$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);
(添加错误处理)