У меня проблемы с тем, чтобы 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);
Я понимаю, что, возможно, мне не хватает чего-то невероятно простого, какая-нибудь помощь?