Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/03/2008, 14h17   #1
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 157
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 157
Points : 38
Points : 38
Par défaut [FTP] Copie de source PHP d'un serveur vers un autre

Bonjour,

Je dispose d'un mini-portail PHP personnel que j'ai distribué sur plusieurs
serveurs. Dans le but de faciliter les mises à jour, j'ai décidé d'écrire un petit script qui va chercher les nouvelles versions des sources sur un serveur précis : ce petit script sera alors distribué avec chaque portail.

Mon soucis est le suivant : je parviens à télécharger toutes sortes de fichiers depuis le serveur de mises à jour sans aucun problème (images, javascript, etc.), mais lorsqu'il s'agit de mes fichiers sources PHP de portail ca ne fonctionne pas. Les fichiers obtenus sont vides ou partiellement incomplets.
Je me dois de préciser que ces fichiers PHP font des echo ou bien disposent de headers pour le téléchargement de fichiers.

Voici donc comment je procède :

Code :
1
2
3
4
5
6
7
 
                      $source = $site_web.$le_fichier;
                      $destination = $le_fichier;
                      $data = file_get_contents($source);
                      $file = fopen($destination, "w+");
                      fputs($file, $data);
                      fclose($file);
Je pense donc que le contenu du fichier PHP téléchargé est lu et pose soucis lors de l'écriture.

Auriez-vous une idée de la solution ?
Merci :-)
Nyphel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2008, 01h59   #2
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 157
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 157
Points : 38
Points : 38
Je me suis apercus que lorsque mon serveur A essaie d'obtenir un fichier PHP de mon server B, alors seule la partie "visible" du code est transférée.

En c'est comme si le fichier source était exécuté sur le server B,et que le résultat de l'exécution était transmise au server A plutôt qu'à un navigateur client. Donc tout ce qui est ECHO est transmis, mais pas le reste de la source.

Le code suivant conduit au même résultat que le code précédant :
Code :
1
2
3
4
5
6
7
8
9
 
        $file = fopen ($site_web.$le_fichier, "rb");
        $fc = fopen($le_fichier, "wb");
        while (!feof ($file)) 
        {
            $line = fread ($file, 1028);
            fwrite($fc,$line);
        }
        fclose($fc);
N'y ya-t-il pas moyen de simplement télécharger le fichier source, sans l'exécuter/interpréter le code ?
Nyphel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2008, 04h39   #3
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
Tu ne pourras jamais récupérer le code source en "consultant" les fichiers que le serveur Apache doit interpréter, c'est avant tout une question de sécurité (sinon, n'importe qui pourrait récupérer le code source).

Il faut nécessairement prévoir une procédure au niveau serveur, soit passer par un transfert de fichier (FTP).

Une solution serait de faire sur le serveur principale une page qui lise le contenu des fichiers que tu veux récupérer, et qui te les sorte dans un fichier texte en passant via

Code :
1
2
3
 
header('Content-type: texte/txt');
readfile('url_de_ton_fichier');
inutile de préciser qu'en faisant ça, il est nécessaires de protéger l'accès à ce fichier (htaccess, ou mot de passe a joindre a l'URL).

Mais si tu as de forte contrainte de sécurité, utilises FTP et de préférence en SSL.
__________________
Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2008, 09h53   #4
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 51
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 51
Points : 39
Points : 39
Est ce que sur ton serveur tu as les droits pour creer des scripts shells et mettre un script en cron?
oOSebOo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2008, 12h27   #5
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 157
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 157
Points : 38
Points : 38
A vrai dire je veux pouvoir distribuer mon petit portail sur tous les serveurs PHP 3 et supérieurs, sans BDD ni aucun support complémentaire que la librairire de gestion d'images BD pour PHP. Donc je ne souhaite pas passer par du shell et du cron, d'une part parce que je ne les maitrise pas, et d'autre part parce que ca ne semble pas être disponible sur la majorité des serveurs

Par exemple moi je suis sur des serveurs Free en ce moment.

Ta solution Gloubi m'intéresse fortement, je vais creuser ca, merci :-)
Nyphel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2008, 23h36   #6
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 157
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 157
Points : 38
Points : 38
Ma foi la solution du header()/readfile() fonctionne correctement avec mon navigateur : ca propose de télécharger le fichier, et le fichier téléchargé est complet.

Toutefois, lorsque j'essaie d'obtenir le contenu avec mon script PHP client, rien ne semble être transmis.
Nyphel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h56.


 
 
 
 
Partenaires

Hébergement Web