Bonjour,
j'ai un serveur perso fabriqué avec des vieux pc et freenas. (serveur distant donc).
Je me suis fait un site perso, hébergé gratuitement, pour ma familles qui est éloignée. Le site fonctionne bien. Pour ne pas stocker les photos et les autre fichiers a partager sur mon site, j'utilise Webdav sur mon serveur comme porte d'accès et curl pour lister les dossiers et afficher les photos. Mais cette solution ne me plait qu'à moitié, car il y a encore trop de manip pour ma famille: pour voir les photos, ils doivent utiliser Webdav qui n'est pas beau et peu manipulable, et pour échanger les fichier, je les fait passer par Filezilla.
Je suis tombé sur un script qui fabrique des miniatures à la volée et en afficher les photos. Mais pour que ça marche, je ne veux plus passer par Webdav. A terme, je souhaite aussi que ma famille télécharge les photos directement depuis le site.
Bref, je commence mon script et j'ai déjà des problèmes pour me connecter.
j'essaye d'utiliser ftp_connect.
<?php
// Global Connection Settings
$ftp_server = "adresse en local"; //adresse du serveur (exclue ftp://)
$ftp_user_name = "login"; // login
$ftp_user_pass = "pass"; // mot de passe
$ftp_port = "1234"; // port du ftp
// ouvre une connexion FTP
$conn_id = ftp_connect ($ftp_server, $ftp_port) or die ( "Impossible de se connecter à $ftp_server " );
// connection
if ( ftp_login ( $conn_id , $ftp_user_name , $ftp_user_pass )) {
echo "Connecté en tant que $ftp_user_name @ $ftp_server " ;
} else {
echo "Impossible de se connecter en tant que $ftp_user_name " ;
}
// Activation du mode passif
ftp_pasv($conn_id, true);
//Renvoie ce qu'il y a
echo ftp_pwd($conn_id);
Et là:
( ! ) Warning: ftp_login(): SSL/TLS required on the control channel in E:\Creation site internet\Wamp\wamp\www\test\index.php on line 17
Call Stack
# Time Memory Function Location
1 0.0014 138800 {main}( ) ..\index.php:0
2 0.0229 147856 ftp_login ( ) ..\index.php:17
Impossible de se connecter en tant que login
( ! ) Warning: ftp_pwd(): SSL/TLS required on the control channel in E:\Creation site internet\Wamp\wamp\www\test\index.php on line 23
Call Stack
# Time Memory Function Location
1 0.0014 138800 {main}( ) ..\index.php:0
2 0.0263 148176 ftp_pwd ( ) ..\index.php:23
Falezilla fonctionne très bien avec les identifiant. Il est connecté en TLS.
Auriez vous des suggetions ? ça fait 4 jours que je me bat. J'ai meme essayé ftp_ssl_connect...
Bonjour,
Mon serveur est une tour à part. Freenas possède son propre FTP. Mon site est pour le moment sur mon pc qui est en réseau via ma box avec mon serveur.
J'utilise actuellement Wamp pour "créer et modifier" mon site. Une version est actuellement sur un hébergeur.
Bref, Wamp et le FTP du serveur n'est lié que par le même routeur.
Je n'arrives pas a comprendre ce qu'il veut dire par:
SSL / TLS requis sur le canal de contrôle
Quel renseignement veut-il de plus ?
Edit:
J'ai enlevé le mode TLS du serveur pour faire un essaie. Ca m'a enlevé les messages d'erreur, mais je n'ai pas pu me connecter pour autant...
Que puis-je faire pour me connecter enfin ? il y a t-il possibilités de me connecter avec un autre langage ? comment fait Filezilla ??
Curl est bien simpa, mais limité dans l'affichage sur mon site php...
As tu essayais d'utiliser ftp_ssl_connect()
? (https://secure.php.net/manual/fr/function.ftp-ssl-connect.php)
FileZila c'est un logiciel donc il utilise lui aussi le protocol FTP mais il est pas coder en PHP
Après le plus simple c'est qu'au lieu de passer par un FTP (et même si tu veux garder ça) tu télécharges tout les fichiers du FTP et tu les stockent sur ton site, ce qui permetra un affichage sans devoir à chaque fois chercher les fichiers sur le FTP.
Oui, j'ai essayé ftp_ssl_connect qui, je pense, n'est pas connu de Wamp puisqu'il ne l'est déjà pas de Win. Mais j'ai essayé de nouveau:
// ouvre une connexion FTP
$conn_id = ftp_ssl_connect($ftp_server, $ftp_port) or die ( "Impossible de se connecter au serveur $ftp_server " );
// essayez de vous connecter
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (!$login_result) {
// PHP aura déjà soulevé un message de niveau E_WARNING dans ce cas
die("can't login");
}
// Activation du mode passif
ftp_pasv($conn_id, true);
echo ftp_pwd($conn_id);
Ce qui donne l'erreur:
Erreur fatale: appel de la fonction non définie ftp_ssl_connect () dans E: \ Creation internet site \ Wamp \ wamp \ www \ test \ index.php à la ligne 15
Pile d'appels
# Temps Mémoire Une fonction Emplacement
1 0,0016 135328 {principale}( ) .. \ index.php : 0
Je ne peux pas stocker les fichiers sur le site, il y en a beaucoup trop... il me faut une connection quoi qu'il en est. Curl est soit trop limité, soit je m'y prend mal car trop peu formé.
Oui, j'ai essayé ftp_ssl_connect qui, je pense, n'est pas connu de Wamp puisqu'il ne l'est déjà pas de Win. Mais j'ai essayé de nouveau:
// ouvre une connexion FTP
$conn_id = ftp_ssl_connect($ftp_server, $ftp_port) or die ( "Impossible de se connecter au serveur $ftp_server " );
// essayez de vous connecter
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (!$login_result) {
// PHP aura déjà soulevé un message de niveau E_WARNING dans ce cas
die("can't login");
}
// Activation du mode passif
ftp_pasv($conn_id, true);
echo ftp_pwd($conn_id);
Ce qui donne l'erreur:
Erreur fatale: appel de la fonction non définie ftp_ssl_connect () dans E: \ Creation internet site \ Wamp \ wamp \ www \ test \ index.php à la ligne 15
Pile d'appels
# Temps Mémoire Une fonction Emplacement
1 0,0016 135328 {principale}( ) .. \ index.php : 0
Je ne peux pas stocker les fichiers sur le site, il y en a beaucoup trop... il me faut une connection quoi qu'il en est. Curl est soit trop limité, soit je m'y prend mal car trop peu formé.
ftp_ssl_connect ne fonctionne pas sur Windows si tu l'a pas compiler toi même si je m'abuse.
Et n'arrive même pas à te connecter à ton FTP (on verra pour chercher els images après) ?
En effet, c'est ce que j'ai comprit. Mais, je n'arrives pas à trouver comment. C'est un peu trop poussé pour mon expérience. Et une question se pose à moi: si je le fais avec mon pc, il faudra le faire aussi plus tard sur mon hébergeur ? sinon, ça ne marchera plus. De plus, si je ne me trompe pas, Wamp ne fonctionne pas en statique ?!
Ton hébergeur est sur Linux (à 99.99% sur) donc c'est pas un problème pour le SFTP.
Et que veut tu dire pas WAMP ne fonctionne pas en statique?
"n'est disponible que si le module ftp et le support OpenSSL sont compilés statiquement "
Pour faire mon site, je travaille avec WAMP. C'est donc les modules de Wamp qu'il faut compiler ? Et j'ai lu a plusieurs reprises des conversations qui mentionnaient le fait que Wamp travaillait en dynamique, mais pas en statique. Intox ?
ça j'en sais rien j'utilise plus WAMP depuis un moment et j'utilise le Sous système Linux sur Windows pour coder sur Win donc là je ne peux pas t'aider
Je n'arrives pas a comprendre comment et quoi "compiler"... il faut installer openssl, c'est ça ?
Bon, je ne trouves pas de solution. Donc, j'en cherche une autre.
Je garde l'utilisation de simpleDom qui fonctionne jusqu'à présent.
Actuellement, puisque Dom affiche seulement, j'ai fait en sorte que ce qui est affiché devienne un lien. On clic et une page s'ouvre sur mon serveur.
<?php
$timeout = 10;
$http_auth_ident = 'xxxx:zzzzz'; // username:password
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
if (preg_match('`^http://`i', $url))
{
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
}
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Retourner le contenu téléchargé dans une chaine (au lieu de l'afficher directement)
curl_setopt($ch, CURLOPT_HEADER, false); // Ne pas inclure l'entête de réponse du serveur dans la chaine retournée) => false, // Ne pas inclure l'entête de réponse du serveur dans la chaine retournée
// Définition de la méthode d'authentification du serveur
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// Définition des identifiants
curl_setopt($ch, CURLOPT_USERPWD, $http_auth_ident);
$serveur = curl_exec($ch); // Le contenu téléchargé est enregistré dans la variable $serveur_content.
curl_close($ch);
?>
<?php
// Connection au serveur
$url = 'http://XXX/Medias/Photo/';
Require_once CORE.DS.'connectwebdav.php';
//-------------------------
require_once CORE.DS.'simple_html_dom.php';
$html = new simple_html_dom();
$html->load($serveur);
foreach ($html->find('h1') as $title):{
$title->outertext = '';
}
endforeach;
foreach ($html->find('a') as $a):{ // je cherche les liens
$a->id="lien1";
$newhref = $url.$a->href; //je fabrique la nouvelle adresse
$a->href = $newhref; // je change l'adresse du lien
$a->target="_blank"; // j'oblige à ouvrir le lien vers Webdav dans un nouvel onglet pour pas perdre ma page du site
}
endforeach;
$photo = $html->save(); //je sauvegarde
echo $photo;
Seulement, on clic que des liens vers des dossiers qui s'ouvre avec WebDav, qui ont des sous dossiers, qui ont des photos.
Je souhaiterais faire en sorte qu'en cliquant, les sous dossiers s'affichent sur la page du site, qui soit cliquable a nouveau pour afficher la "galerie" souhaitée.
J'ai donc plusieurs problemes a résoudre:
Quel est votre avis, svp ? comment faire une sorte de boucle en cliquant ? suis-je sur une bonne voie ?
Edit: je suis dessus depuis tout à l'heure, et en fait, je n'arrives pas a voir comment prendre le problème...