Una tarea bastante habitual desde PHP es conectarse a un FTP para lo cual PHP tiene diferentes funciones pero que sin embargo si se trata de SFTP seguramente haya que habilitar la librería libssh2 que no viene instalada por defecto.

Si para la instalación de PHP se utilizan el tutorial Instalación del Stack Nginx+MySQL+MutiPHP en CentOS o  Crear contenedor Docker con CentOS7/Nginx/MariaDB y MultiPHP se puede continuar sin problemas, de lo contrario convendrá solo se instalen los paquetes que se necesiten.

Lo primero va a ser instalar las siguientes librerías, sino no se tiene instalada alguna de las versiones de PHP que figuran a continuación se deben omitir dichos paquetes.

yum install -y libssh2-devel php54-php-pecl-ssh2 php55-php-pecl-ssh2 php56-php-pecl-ssh2 php70-php-pecl-ssh2 php71-php-pecl-ssh2 php72-php-pecl-ssh2 php73-php-pecl-ssh2

A continuación se debe agregar la extensión a los php.ini en este caso, estos pasos a continuación pertenecen a los repositorios de remi y a la instalación de los artículos que ya se mencionaron antes asi que la ubicación de php.ini puede cambiar según lo que tengan instalado

echo "extension=ssh2.so" >> /opt/remi/php54/root/etc/php.ini
echo "extension=ssh2.so" >> /opt/remi/php55/root/etc/php.ini
echo "extension=ssh2.so" >> /opt/remi/php56/root/etc/php.ini
echo "extension=ssh2.so" >> /opt/remi/php56/root/etc/php.ini
echo "extension=ssh2.so" >> /etc/opt/remi/php70/php.ini
echo "extension=ssh2.so" >> /etc/opt/remi/php71/php.ini
echo "extension=ssh2.so" >> /etc/opt/remi/php72/php.ini
echo "extension=ssh2.so" >> /etc/opt/remi/php73/php.ini

Por último se reinician los servicios PHP-FPM

systemctl restart php54-php-fpm
systemctl restart php55-php-fpm
systemctl restart php56-php-fpm
systemctl restart php70-php-fpm
systemctl restart php71-php-fpm
systemctl restart php72-php-fpm
systemctl restart php73-php-fpm

Para probar si funciona correctamente se puede utilizar el siguiente código PHP obviamente cambiando los datos de acceso, sino se tiene muy claro cual es el $path exacto se puede colocar simplemente /./ ( es decir barra/punto/barra)

<?php

$host = "tudominio.com";
$port = "22";
$user = "tuusuario";
$password = "tupasword";
$path = "/home/tuusuario/";

$connection = ssh2_connect($host,$port) or die ("Can't connect to FTP Server : $FTPserver");
ssh2_auth_password($connection, $user , $password);

$sftp = ssh2_sftp($connection);

$dir = opendir("ssh2.sftp://$sftp$path");

while (false !== ($file = readdir($dir))) {
echo "$file<br>\n";
}
?>

Con el ejemplo básico anterior podemos probar que haya quedado todo instalado, si te da un error seguramente falta algún paquete desde yum o falta agregar al php.ini correcto ya que en el sistema podemos tener más de uno, es algo a tener en cuenta. Si tienes cualquier duda puedes dejar la consulta en el comentario.

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Alvaro De León

Subscribe now to keep reading and get access to the full archive.

Continue reading