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.
Administrador de Sistemas, Programador, Docente y ahora resulta que también Blogger (peor es ser tictoker). Más de 20 años de experiencia en computación atendiendo nabos y resolviendo problemas, los cuales si no fuera por estos nabos, no habrían ocurrido en primer lugar. Escribo más que nada sobre tecnología y herramientas en general, además de algunos artículos con opiniones tan subjetivas como irrelevantes, así que si no te gustan, mejor madura y superalo.