copie d'un fichier de mon ordi vers le serveur free

yeb
Petit nouveau ! | 4 Messages

02 avr. 2010, 23:39

Bonsoir. Mon problème n'est sûrement pas original mais je n'y trouve pas de réponse (une après-midi là dessus !) : je veux copier un fichier présent sur mon disque dur (apache2/ubuntu) vers mon site internet.
La commande :
copy('http://127.0.0.1/compo/35.png',"../../. ... ite/35.png");
donne
[function.copy]: failed to open stream: HTTP request failed! in ...
Si je remplace 127.0.0.1 par mon adresse IP, j'ai en plus :
HTTP/1.0 403 Forbidden
J'ai pourtant fait un chmod 755 et même 777 sur le dossier compo, qui appartient à l'utilisateur www-data.
Bien sûr, le fichier http://127.0.0.1/compo/35.png s'affiche dans mon navigateur.

Pourriez-vous m'aider, il ne me reste presque plus de cheveux !

ViPHP
ViPHP | 2287 Messages

03 avr. 2010, 00:05

Bonsoir,
Pourriez-vous m'aider, il ne me reste presque plus de cheveux !
Je compatis, sincèrement ! Bon sinon, revenons à nos mout... euh, poils :
copy('http://127.0.0.1/compo/35.png',"../../../textes/exos/activite/35.png");
un chemin vers un fichier, sous linux, ressemble à ceci :

Code : Tout sélectionner

/une/série/plus/ou/moins/longue/de/dossiers/et_finalement_un_fichier
Le deuxième paramètre que tu transmets à la fonction copy en est un bon exemple, c'est un chemin que l'on dit relatif, car il ne commence pas par un / initial (qui symbolise la racine de ton système).

Le premier paramètre que tu donnes à copy, en revanche, n'est pas un chemin vers un fichier mais une url. Le :// est caractéristique. Une url a ceci de particulier qu'elle symbolise un chemin d'accès à travers un réseau, ce qui ne peut pas fonctionner partout comme tu l'imagines. Il faudrait donc transformer cette url en une des deux formes valides dont je viens de te parler :)

Si ta configuration d'apache est standard, ton chemin pourrait ressembler à ceci :

Code : Tout sélectionner

/var/www/htdocs/compo/35.png
if(!@work()){ Nespresso(); } else { what(); }
______________________________

yeb
Petit nouveau ! | 4 Messages

03 avr. 2010, 00:33

Non, car c'est le apache de chez Free qui doit copier un fichier présent sur mon disque dur. Une URL semble donc indispensable.
Maintenant, logiquement, je devrais plutôt mettre mon IP puisque 127.0.0.1 doit être le localhost de chez Free.
Mais bon, avec mon IP, ça ne marche pas non plus (erreur 403 en plus).

ViPHP
ViPHP | 2287 Messages

03 avr. 2010, 00:42

Non, car c'est le apache de chez Free qui doit copier un fichier présent sur mon disque dur. Une URL semble donc indispensable.
Maintenant, logiquement, je devrais plutôt mettre mon IP puisque 127.0.0.1 doit être le localhost de chez Free.
Mais bon, avec mon IP, ça ne marche pas non plus (erreur 403 en plus).
Dans ce cas, je confirme tout ce que tu viens de dire, tu dois utiliser ton ip (internet l'ip hein, pas une ip de réseau local et pas 127.0.0.1 non plus). Tu peux visiter ce site pour vérifier si tu as un doute : http://whatismyip.com/.

Et si tu obtiens malgré tout ça une 403 (accès non-autorisé) c'est probablement parceque ton apache n'est pas configuré pour autoriser l'accès depuis internet aux fichiers qu'il sert. Il va donc falloir te pencher sur sa configuration (en étant conscient de ce que ça implique).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

yeb
Petit nouveau ! | 4 Messages

03 avr. 2010, 00:50

Une idée sur les modifications à apporter ?

Sinon, d'autres possibilités (ou pas ?) :
- un programme de sécurité peut-il interférer ?
- la configuration de ma freebox aussi ?

ViPHP
ViPHP | 2287 Messages

03 avr. 2010, 01:26

Une idée sur les modifications à apporter ?
Regarde du côté des directives Allow & Deny au niveau du VirtualHost principal ( voir le dossier /etc/apache2/sites-available/ ) et/ou du fichier de conf principal. Mais va quand même lire le manuel (pour recharger la configuration d'apache2 notamment), pour ce genre de choses il faut vraiment que tu sois un peu sûr de ce que tu fais, c'est assez critique d'ouvrir un serveur à internet et je ne le ferais pas sans avoir passé sommairement en revue toute la configuration (et les modifs éventuelles à y faire) si j'étais toi :D
Sinon, d'autres possibilités (ou pas ?) :
- un programme de sécurité peut-il interférer ?
- la configuration de ma freebox aussi ?
Pour moi le fait que tu obtiennes une 403 en retour (ajouté au fait que tu n'aies visiblement pas touché à la configuration de ton serveur apache2 après son installation) rend ces deux causes peu probables. Mais selon les cas, ces deux pistes ne seraient en effet pas à exclure.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

yeb
Petit nouveau ! | 4 Messages

04 avr. 2010, 15:05

Un simple :

Code : Tout sélectionner

copy('http://82.66.130.188/index.html','toto.html');
donne une erreur 403.
Aidez-moi, svp, je galère la dessus depuis 2 jours !

Invité
Invité n'ayant pas de compte PHPfrance

04 avr. 2010, 22:00

Bonjour,
j'ai eu le même soucis avec Free, j'ai fini par trouver en fouillant avec Google qu'il fallait passer par php3 pour pouvoir uploader des fichiers de son pc sur l'hebergement free.

j'utilise ce petit code qui marche pas trop mal

Code : Tout sélectionner

<?php $numMo=4; // Nombres de Mo maxi en upload (à modifier) switch($action_Acces) { case "Valider" : $file_types_array = array('zip','rar','pdf'); // extensions acceptés. $taille_ko = (1024*1024)*$numMo; // poids maxi fichier ici 4mo. $origfilename = $_FILES['userfile']['name']; // Nom du fichier sur le disque utilisateur $dir = "dossier_destination/"; if ($taille <= $taille_ko){ $temp = explode('.', $origfilename); // On "explose" le nom du fichier pour chaques "." trouvés. $file_ext = false; $ext= end($temp); for($i=0;$i<sizeof($file_types_array);$i++) // tant que $i est inferieur au nombre d'éléments du tableau... { if (strtolower($ext) === $file_types_array[$i]) { $file_ext = true; } } if ($file_ext == true) { if (!copy($userfile, $dir."$userfile_name")) { print("<br>Probleme de transfert !<br>"); } else { echo "Fichier enregistré : $userfile_name"; } } else { echo "extension non reconnue"; } } else { echo "Le fichier est trop volumineux"; } } default: // FORMULAIRE HTML echo '<table width="95%" border="0" align="left" bgcolor="#BEB69F" style="margin-top:8px;border:1px solid green;">'; echo "<tr><th colspan=2 ><font face='arial' color='black'> Upload de documents .rar, .zip ou .pdf<br>(maxi: $numMo mo)<br></font></th></tr>"; print("<FORM ENCTYPE=\"multipart/form-data\" ACTION=\"PHP_SELF\" METHOD=\"post\">"); print("<INPUT NAME=\"userfile\" TYPE=\"file\" value=\"$userfile\" size=\"40\">"); ?> </td></tr><tr><th colspan=2> <INPUT TYPE="submit" NAME="action_Acces" VALUE="Valider"> </form></th></tr> <?php echo '</td></tr>'; echo '</table>'; } ?>

ViPHP
ViPHP | 5462 Messages

05 avr. 2010, 14:19

Bonjour,
j'ai eu le même soucis avec Free, j'ai fini par trouver en fouillant avec Google qu'il fallait passer par php3 pour pouvoir uploader des fichiers de son pc sur l'hebergement free.
php3 ca marche pas sur mon minitel...

http://www.php.net/manual/fr/features.file-upload.php

ViPHP
AB
ViPHP | 5818 Messages

05 avr. 2010, 18:55

Si cette page est toujours d'actualité http://www.free.fr/assistance/947-acces ... dites.html
chmod est interdit chez free

Petit nouveau ! | 7 Messages

06 avr. 2010, 06:08

Bonjour,

j'ai un hebergement Free aussi, et je ne peux pas faire de CHMOD. Par contre dans ce cas on peut contourner le problème avec un code php3, voirici