servidor libreria ftp_connect conectar php apache ftp centos

libreria - php ftp_connect ssh



No se puede conectar a FTP con PHP ftp_connect de localhost (3)

Pruebe ''127.0.0.1'' en lugar de ''localhost''

ftp_connect(''127.0.0.1'', 21);

He estado tratando de crear una secuencia de comandos para descargar archivos a través de FTP desde mi servidor local Apache en CentOS y no puedo hacerlo funcionar.

El código que estoy usando es el mismo que usa cualquier solicitud ftp básica:

<?php $ip= FTP_IP_HERE; $port=''21''; $timeout=''90''; $un=''username''; $pw=''password''; // Connect to ftp $conn_id = ftp_connect($ip,$port,$timeout); // Open a session to an external ftp site $login_result = ftp_login ($conn_id, $un, $pw); // Check open if ((!$conn_id) || (!$login_result)) { print "FTP connection failed!"; exit(); } // turn on passive mode transfers if (ftp_pasv($conn_id, true) == FALSE) { print "Passive FTP connection failed!"; exit(); }

¡Probé la misma secuencia de comandos en el servidor remoto y funcionó! No estoy seguro de si se debe realizar alguna configuración de Apache, o una limitación de PHP en sí.

ACTUALIZAR :

Aquí está el registro de error:

Warning: ftp_login() expects parameter 1 to be resource, boolean given in /var/www/html/ftp/FTP.php on line 16 Warning: ftp_get() expects parameter 1 to be resource, boolean given in /var/www/html/ftp/FTP.php on line 22 Falha ao enviar o arquivo test.pdf<br />Array ( [type] => 2 [message] => ftp_get() expects parameter 1 to be resource, boolean given [file] => /var/www/html/ftp/FTP.php [line] => 22 ) Warning: ftp_close() expects parameter 1 to be resource, boolean given in /var/www/html/ftp/FTP.php on line 30


Ok, tuve el mismo problema y encontré la solución para mi caso. Publicarlo aquí para ayudar a otros.

Mi script PHP fallaría pero podría FTP fácilmente a través de la línea de comando. Verifiqué que mi firewall no estaba bloqueando el script y no estaba obteniendo ningún error de PHP en mi registro ...

Después de buscar, parecía que mi problema era SELinux . No quería apagarlo, así que revisé el estado de httpd_can_network_connect .

Verifica tu estado ejecutando:

getsebool httpd_can_network_connect

Si lo consigues:

httpd_can_network_connect --> off

Este puede ser tu problema.

Nota:

Si ya tienes esto on :

httpd_can_network_connect --> on

o

SELinux is disabled

Entonces esto no va a resolver su problema ... Buena suerte para encontrar su solución.

La solución

Habilite httpd_can_network_connect ejecutando:

setsebool httpd_can_network_connect=1

Pruebe su script nuevamente y vea si funciona. Esto funcionó para mí, así que me aseguré de establecer una política para mantener esto habilitado.

setsebool -P httpd_can_network_connect=1

NOTA: -P establece la política para que persista durante un reinicio


Primero asegúrese de que no sea un problema con su firewall local o algo así. Intente FTP desde cualquier otra herramienta, por ejemplo

wget --user=username --password=''password'' ftp://FTP_IP_HERE/file_to_download

Si wget no se conecta también, es un problema con la configuración de tu red.

Si wget supera la prueba, también puedes intentar habilitar el informe detallado de errores para ver qué está mal con tu intento de PHP al colocar esto en la parte superior de tu código:

<?php ini_set(''display_errors'',1); error_reporting(E_ALL|E_STRICT);

Finalmente, esto también podría ser relevante para su caso: No se puede conectar con el servidor FTP con PHP, ftp_connect ()