Загрузка файла с локального на сервер через FTP с использованием PHP

0

Я хотел бы загрузить файл на сервер из моего локального. Я пробовал следующий код, но он дает некоторую ошибку. Пожалуйста, помогите мне решить

<?php 
$server="115.120.147.261";
$ftp_user_name="root";
$ftp_user_pass="3424dd";
$dest="/home/root/web/Price-War/";
$source="/home/root/sample.txt";
$connection = ftp_connect($server);
if($connection)
{
echo "Connection Established";
}
$login = ftp_login($connection, $ftp_user_name, $ftp_user_pass);

if (!$connection || !$login) { die('Connection attempt failed!'); }

$upload = ftp_put($connection, $dest, $source, FTP_ASCII);

if (!$upload) { echo 'FTP upload failed!'; }

ftp_close($connection);
?>

Это бросает следующую ошибку.

Connection Established
PHP Warning:  ftp_put(): Could not create file. in /home/root/Desktop/upload.php on line 16
  • 0
    Проверьте разрешение вашей папки, если оно уже установлено на 777?
  • 0
    Я дал разрешение на файл. Но все же я получаю ту же ошибку.
Теги:
file-upload
ftp
upload

4 ответа

0

Я также работаю с PHP и FTP, за исключением того, что загружаю загрузку. Мой локальный путь должен быть абсолютным путем (полный путь) к файлу, а мой FTP-путь должен быть относительным.. вроде как:

$ftp_path = "/foldername/filename.txt";
$local_path = "C:\wamp\www\my_website\files\file_to_upload.txt"

Получите свой локальный путь следующим образом:

$path_to_root   = dirname(__FILE__);
$local_folder   = "\my_website\files\";
$local_full_path= $path_to_root.$local_folder."file_to_upload.txt";

Я также использую ftp_nb_get(), а не ftp_get(), поэтому я могу запускать дополнительный код во время его загрузки (например, проверка размера файла частично загруженного файла). Посмотрите мой код здесь:

PHP ftp_nb_get получает локальный размер частичного файла при загрузке

0

Поместите этот LOC выше ftp_put(). Возможно, вам придется назначить режим загрузки пассивным, чтобы загрузить файл.

ftp_pasv($connection, true);
  • 0
    Спасибо за Ваш ответ. Все еще не работает.
  • 0
    Ну хорошо, 3 вещи, которые мы хотим выяснить. 1. Путь к месту назначения, 2. Имя файла при его загрузке. 3. Откуда ваш файл? ($ _FILES?)
Показать ещё 3 комментария
0

Это похоже на то, что вы (или, скорее, ваш скрипт) не имеете необходимых прав доступа для создания файла. Убедитесь, что каталог принадлежит пользователю, выполняющему сценарий. Вам может потребоваться предоставить определенные разрешения для каталога загрузки (в отношении вашего скрипта) с помощью команды chmod.

Многие люди расскажут вам использовать chmod 777 directoryname или chmod 755 directoryname чтобы позволить скрипту создавать и редактировать файлы. Однако это может вызвать серьезную проблему безопасности, поскольку она позволяет всем пользователям получать доступ и редактировать файлы в каталоге.

  • 1
    Скрипту нужны только права на чтение, но должны быть права на запись на FTP-сервер.
  • 1
    Я дал разрешение на файл. Но все же я получаю ту же ошибку.
Показать ещё 2 комментария
0

$ Dest = "/главная/корень/веб/цена-War/";

Вам нужно указать имя файла.

$ Dest = "/главная/корень/веб/цена-War/sample.txt"

  • 0
    Но переменная dest должна записывать файл в это место. Поэтому я надеюсь, что нет необходимости указывать имя файла. Исправьте меня, если я ошибаюсь
  • 0
    Просто проверь это ...
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню