У меня есть класс, который обрабатывает вещи FTP, расположенные здесь:
/var/www/html/crm/rhinos/classes/ftp.php
Этот класс включен в скрипт, который генерирует электронную таблицу здесь:
/var/www/html/crm/send_cust_lock.php
Созданная электронная таблица находится здесь:
/var/www/html/crm/tmp/cust_lock_1430424215.xlsx
Мой класс содержит следующий метод:
public function put($filepath){
$fp = fopen($filepath, 'r');
$z = ftp_fput($this->connection, $filepath, $fp, FTP_BINARY);
fclose($fp);
return $z;
}
От моего send_cust_lock.php
сценарий, когда я звоню $ftp->put($fn);
($fn
будучи указанным выше путем к файлу электронной таблицы), я получаю следующую ошибку:
Warning: ftp_fput(): Can't open that file: No such file or directory in /var/www/html/crm/rhinos/classes/ftp.php on line 62
fopen()
не выдает ошибку, так почему ftp_put()
бросить один?
Я попытался преобразовать путь в относительный путь, используя функцию в выбранном ответе Вот, но не повезло. Как я могу преобразовать путь к файлу в то, что ftp_put()
может распознать?
руководство говорит, что значения:
ftp_fput ( resource $ftp_stream , string $remote_file , resource $handle , int $mode [, int $startpos = 0 ] )
И вы проходите мимо:
$z = ftp_fput($this->connection, $filepath, $fp, FTP_BINARY);
Где твой $fp
дескриптор локального файла, как и ожидалось, но почему вы передаете тот же путь, что и $remote_file
? Он не найдет его на удаленном FTP, так как вы передали имя локального файла.
Других решений пока нет …