Отправка файла с сервера на свой яндекс-диск.

Все о скриптах

Модераторы: Art.i, vasya

Отправка файла с сервера на свой яндекс-диск.

Сообщение sultan » Вт сен 06, 2016 9:32 pm

Здравствуйте. может кто подсказать как правильно написать скрипт на php для отправки файла с сервера (debian 7) на свой яндекс-диск используя curl и webdav. Заранее спасибо.
sultan
 
Сообщений: 11
Зарегистрирован: Вт июн 16, 2015 11:31 am

Re: Отправка файла с сервера на свой яндекс-диск.

Сообщение Mikanoshi » Вт сен 13, 2016 10:10 am

Я делал используя bash и curl:
http://mikanoshi.name/webdav-backup/
На PHP там только имя:пароль указать в CURLOPT_USERPWD, а также CURLOPT_PUT 1, файл (fopen) в CURLOPT_INFILE и его размер в CURLOPT_INFILESIZE. В гугле есть примеры)
Mikanoshi
 
Сообщений: 205
Зарегистрирован: Сб май 02, 2009 2:03 pm

Re: Отправка файла с сервера на свой яндекс-диск.

Сообщение sultan » Ср сен 14, 2016 8:38 pm

Спасибо большое. попробую. Но вопрос реализации на PHP все же остается открытым (так как найденное в инете так и не сработало). желательно с примером.
sultan
 
Сообщений: 11
Зарегистрирован: Вт июн 16, 2015 11:31 am

Re: Отправка файла с сервера на свой яндекс-диск.

Сообщение sultan » Чт сен 15, 2016 12:37 am

Вот нашел по этой ссылке https://htmlweb.ru/php/example/upload_yandex_disk.php код:
<?
$url='путь и имя на Яндекс-диске';
$file='файл для загрузки';
$user='ваш логин на яндексе';
$pass='ваш пароль на яндексе';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_URL, 'https://webdav.yandex.ru' . $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents($file));
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Basic " . base64_encode($user . ":" . $pass)));
$answer = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ($info['http_code'] != '201') echo "Error!";
echo "Ok";
?>

у меня он выдает код ошибки [http_code] => 405. и соответственно ничего никуда не копируется. пути, логин и пароль проверил неоднократно. curl - подключен и работает. что не так в этом примере?
sultan
 
Сообщений: 11
Зарегистрирован: Вт июн 16, 2015 11:31 am

Re: Отправка файла с сервера на свой яндекс-диск.

Сообщение sultan » Пт сен 16, 2016 1:11 pm

вопрос близкий к теме. находясь под root выполняется команда curl --user login:pass -T /path/file.txt https://webdav.yandex.ru и файл успешно копируется в яндекс.диск. А вот в php скрипте функция system("curl --user login:pass -T /path/file.txt https://webdav.yandex.ru"); не срабатывает. подскажите в чем проблема?
sultan
 
Сообщений: 11
Зарегистрирован: Вт июн 16, 2015 11:31 am

Re: Отправка файла с сервера на свой яндекс-диск.

Сообщение sultan » Пт сен 16, 2016 2:02 pm

разобрался. у пользователя надо было включить доступ к shell. но тут опять возник вопрос. :)

$filebackupfull2 = "/fullpath/2.txt";
system ('curl --header "Authorization: OAuth TOKEN" -T /fullpath/2.txt https://webdav.yandex.ru'); - этот скрипт выполняется
system ('curl --header "Authorization: OAuth TOKEN" -T $filebackupfull2 https://webdav.yandex.ru'); - а этот почему то не выполняется хотя тоже самое только имя файла задано переменной. где ошибка?
sultan
 
Сообщений: 11
Зарегистрирован: Вт июн 16, 2015 11:31 am


Вернуться в CGI, Perl, PHP

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2