ftp — ссылка на файл из реального пути Переполнение стека

У меня есть класс, который обрабатывает вещи 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() может распознать?

0

Решение

руководство говорит, что значения:

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, так как вы передали имя локального файла.

3

Другие решения

Других решений пока нет …