Запити до сервера через php

11.05.2011
Server requests through php
Автор:

При веб розробці часом виникає необхідність виконати такі дії/команди, для яких недостатньо прав чи відсутній доступ до певних директорій у користувача з під якого запущений на сервері та виконується друпал.  Вихід з даної ситуації - бібліотека libssh2, яка забезпечує доступ до ресурсів(shell) віддаленого сервера використовуючи зашифроване з’єднання.

Shell — (від англ. оболонка) – це інтерпретатор команд операційної системи.

Для використання shell команд в php необхідно знати: порт, хост, ім’я користувача, пароль. Для з’єднання з сервером використовується функція ssh2_connect, для авторизації користувача - ssh2_auth_password.

$port   = 2002;
$server = 'example.com';
$login  = 'user@example.com';
$pass   = '12345';
if (!function_exists("ssh2_connect")) {
 exit("ssh2_connect disable");
}
if(!($con = ssh2_connect($server, $port))){ 
//переменный $con в случае успешного соединения
//присваивается ссылка идентификатора SSH з’соединения, 
//необходимое позже для вызова функции ssh2_auth_password, 
//при неудачном соединении присваеваится значение FALSE.
  exit("could not connect to {$server} with port {$port}");
}
if(!ssh2_auth_password($con, $login, $pass)) {
 exit("login/password is incorrect");
}

А також існують наступні шляхи авторизації:

Наприклад, після встановлення з’єднання стають доступні такі sftp функції:

  • ssh2_sftp_mkdir - створення директорій;
  • ssh2_sftp_rename перейменовування віддалених файлів;
  • ssh2_sftp_rmdir видалення директорій;
  • ssh2_sftp_unlink - видалення файлів;
  • ssh2_sftp - Ініціалізація підсистеми SFTP з вже підключеним сервером SSH2;
  • ssh2_sftp_realpath - перетворює ім'я файла в реальний ефективний шлях на віддаленій файлової системи.

І це далеко не весь список.

$sftp = ssh2_sftp($con);
ssh2_sftp_mkdir($sftp, '/new_directory');
ssh2_sftp_rmdir($sftp, '/old_directory');

Найбільш функціональною є функція ssh2_exec, яка дає змогу виконувати доступні на сервері shell команди для даного користувача.

if (!(ssh2_exec($con, "rm {$file}" ))) {
 exit("remove file failed");
}  
if (!(ssh2_exec($con, "cp {$path_from} {$path_to}" ))) {
 exit("file copy failed");
}

Тобто, дана бібліотека дозволяє використовувати shell команди у php коді, що значно розширює можливості для розробки.

Голосів: 1 Рейтинг: 5

Також по темі

1

Однією з вагомих переваг Drupal 7 щодо його попередників є його гнучкість до налаштувань і систем. Розробники не обійшли стороною і запити до БД. В цьому релізі вони стали об'єктивно-орієнтованими...

2

В кінці квітня цього року в своєму офіціальному блозі представники Google Analytics оголосили про запуск бета-тестування нового інтерфейсу. А в цій статті я хочу розповісти про використання...

3

Стаття для тих, в кого виникає необхідність відобразити прикріплений PDF документ на сторінці перегляду вмісту. Реалізується це доволі просто...

4

Пакетні операції дають можливість обробляти форми на протязі декількох запитів. Це попереджує обривання обробки через тайм-аут РНР. Також користувачу надається інформація про хід здійснення таких...

5

В цій статті я розкажу і розпишу як оперувати основними хуками із розділів Field API.

Field API - один з розділів Drupal 7 API, які дозволяють нам:

  • створювати поля, що...

Subscribe to our blog updates