PHP Запись в файл на другом сервере

Мне нужно написать файл, который находится на другом сервере, используя php.

Таким образом, я получаю данные пользователя из формы на одном сервере, а затем должен писать текстовый файл, расположенный на другом сервере. Нужно ли мне аутентифицироваться или что-то подобное?

Второй сервер, который мне нужно написать, – это сервер Windows. Это проблема?

Благодаря!

Нет никакой проблемы, пишете ли вы на обоих серверах, вы можете это сделать с помощью PHP FTP .

Убедитесь, что у вас есть правильные разрешения на запись файлов на серверы, или ваш код не будет работать и получить отказ в доступе.

Вам нужно иметь некоторую службу на удаленном (Windows) компьютере, который будет принимать файл и хранить его. Есть много способов сделать это:

  • (если ваш первый сервер – Linux, вы можете подключить его через Samba или использовать smbclient, чтобы нажать файл. Если это окна, просто назначьте ему букву, такую ​​как Z: и файл копирования там)
  • FTP (запустить FTP-сервер, например FileZilla, и использовать cURL или другую библиотеку PHP для загрузки)
  • HTTP (запустите Apache + PHP или IIS / .Net или любой другой веб-сервер в Windows и напишите небольшую программу, которая примет данные POST и сохранит ее в файл. Вы можете использовать cURL или другую библиотеку для использования HTTP POST для отправки файла из PHP)
  • SSH (вы можете запустить сервер OpenSSH и скопировать файл с помощью scp)

Я использую HTTP-подход, и он работает довольно хорошо (потому что я уже запускаю Apache на удаленных машинах), но любой другой вариант также жизнеспособен.

Я не знаю, возможно ли это для вас, но …

Вместо того, чтобы пытаться обновить файл на другом сервере, особенно что-то простое, как txt-файл, я бы имел текущий файл на сервере один, а затем я бы скопировал его на сервер два с сервера два с cURL, используя задание cron, чтобы скопировать файл каждые x минут.

  $ch = curl_init(); // set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); set_time_limit(3600); # 5 minutes for PHP curl_setopt($ch, CURLOPT_TIMEOUT, 3600); # and also for CURL $outfile = fopen( $dirname, 'wb'); curl_setopt($ch, CURLOPT_FILE, $outfile); // grab file from URL $response = curl_exec($ch); fclose($outfile); // close CURL resource, and free up system resources curl_close($ch); ` 

Я сделал бы это только потому, что вам не пришлось бы заниматься настройкой учетной записи FTP для обновления или чего-либо подобного. Ваш сервер, в котором находится файл, выходит и захватывает файл для себя.

Я использую вышеупомянутый скрипт для сбора mp3 из разных блогов. Когда-то они будут 100-200 МБ, и он отлично работает на общем сервере.

Если вы хотите использовать SFTP, вы можете сделать это, используя cURL. Stack Overflow post

с php вы можете сделать ftp-соединение и записать файл на .net-сервере с ftp

аутентификацию можно выполнить с помощью ftp

для информации, как вы можете это сделать http://nl.php.net/ftp

Вы используете ftp на втором сервере?

Вы также можете выполнить вызов ajax для второго сервера с данными

На втором сервере вы помещаете скрипт, который записывает файл с содержимым, но затем вы должны запускать http на втором сервере с языком скриптов, например php / asp