Ne peut pas se connecter en FTP avec PHP ftp_connect à partir de localhost
Je j'ai essayé de faire un script pour télécharger des fichiers via le FTP de mon localhost Apache dans CentOS et je ne peux pas le faire fonctionner!
Le code que j'utilise est très utilisé par n'importe quel ftp de base demande:
<?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();
}
J'ai essayé le même script sur le serveur distant et cela a fonctionné!
Je ne suis pas sûr si c'est une configuration d'apache à faire, ou un PHP limitation elle-même.
Mise à JOUR:
Voici le log d'erreur:
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
Vous devez vous connecter pour publier un commentaire.
Ok, j'ai eu le même problème et j'ai trouvé la solution pour mon cas. Le poster ici pour aider les autres.
Mon script PHP serait un échec, mais je pourrais facilement FTP via la ligne de commande. J'ai vérifié mon pare-feu n'empêche pas le script et je n'allais pas les erreurs PHP dans mon journal...
Après recherche, il semble que mon problème a été
SELinux
. Je ne voulais pas l'éteindre j'ai donc vérifié l'état dehttpd_can_network_connect
.Vérifier votre statut en cours d'exécution:
Si vous obtenez:
C'est peut être ton problème.
Remarque:
Si vous disposez déjà de ce
on
:ou
Alors cela ne va pas résoudre votre problème... Bonne chance pour trouver votre solution.
Le Correctif
Permettre
httpd_can_network_connect
en cours d'exécution:De tester votre script à nouveau et voir si cela fonctionne. Cela a fonctionné pour moi, donc j'ai fait en sorte à définir une stratégie pour conserver cette option.
REMARQUE:
-P
définit la politique donc, il persiste au-delà d'un redémarrageAssurez-vous d'abord ce n'est pas un problème avec votre pare-feu ou quelque chose. Essayez de FTP à partir de n'importe quel autre outil, par exemple
Si wget ne parvient pas à se connecter en tant que bien, c'est un problème avec les paramètres de votre réseau.
Si wget passe le test, vous pouvez aussi essayez d'activer le rapport d'erreur détaillé pour voir quel est le problème avec votre PHP tenter de la placer en haut de votre code:
Enfin, cela peut aussi être pertinentes au regard de votre dossier: Impossible de se connecter à un serveur FTP avec PHP , ftp_connect()
Essayer '127.0.0.1' au lieu de 'localhost'