Hébergement du site en PHP et Mysql par WDMédia-hébergement
Vous aussi adpotez les éléPHPants de Vincent Pontier !  


Rechercher dans le forum

Mots-clés :

Trouver :
un de ces termes tous les termes

Depuis :
7 j 15 j 30 j


Retour à l'index du forum

Erreur d'upload

Message original de Sha-ka

Le : 11/04/2009 à 02:00:48

Dejà lu 2773 fois avant vous

Bonsoir. J'ai un petit souci d'upload. Le message d'erreur est le suivant : An error occured. The image could not be added because it already exists or it is corrupted.
Il provient de la ligne 24 de la page post_add du dossier incluides, vous dl la page sur le lien suivant : http://gelbooru.com/index.php?page=forum&s=view&id=99

En gros, il me dit que soit l'image existe déjà, soit elle est corrompue. Le hic, c'est que les images que j'essaye d'uploader ne sont ni corrompues, ni en double (le dossier est vide).
Pour la page de test, c'est ici : http://toutvisuel.com/index.php?page=post&s=add

J'ai regardé le code mais je n'ai rien vu qui clochait... D'où pourrais provenir l'erreur ? D'avance merci.

Re: Erreur d'upload

Réponse de luce

Le : 11/04/2009 à 11:36:21

Salut,

Normalement, je ne check pas les scripts sur phpd, mais là, ca va me permettre pour tester sur wdmedia si ils fonctionnent.

Je le télécharge, mais si c'est bien le script avec les procédures, alors, je crois qu'il doit y avoir un chmod 0766 dedans (je rigole si c'est ça, et tu pourras demander pourquoi à manico :P)

Mais sinon, vérifie bien le chmod de ton répertoire en 755 ou 777, et autre chose, le message d'erreur d'un script ne veut absolument rien dire !!!!

Re: Erreur d'upload

Réponse de luce

Le : 11/04/2009 à 11:51:04

Re,

Bon, je test même pas sur wdmedia, c'est n'importe quoi !


        else if(!empty($_FILES['upload']) && $_FILES['upload']['error'] == 0)
        {
            $iinfo = $image->process_upload($_FILES['upload']);
            if($iinfo === false)
                $error = $image->geterror()."<br />An error occured. The image could not be added because it already exists or it is corrupted.";
            else
                $uploaded_image = true;
        }



Je traduis :
Si upload n'est pas vide et qu'il n'y a pas de message d'erreur, on affiche un message d'erreur !

$_FILES['upload']['error'] == 0 => veut dire "si pas d'erreur".

Remplace le == par un signe supérieur et ca sera bon

Re: Erreur d'upload

Réponse de Sha-ka

Le : 11/04/2009 à 12:32:01

Hello et merci.
Seul bémol : en mettant > à la place de ==, c'est l'autre message d'erreur qui apparait, c'est à dire "No image given for upload. " :/

Re: Erreur d'upload

Réponse de luce

Le : 11/04/2009 à 12:48:46

hmmm

($_FILES['upload']['error'] !== 0) ?

Re: Erreur d'upload

Réponse de luce

Le : 11/04/2009 à 12:50:17

Ah merde, non attend, je me suis plantée, c'est la fonction proceed_upload qui merde (salete d'accolande manquante !)

Bon je vais voir ce qu'il se passe

Re: Erreur d'upload

Réponse de luce

Le : 11/04/2009 à 13:13:17

Bon, ca vient probablement de image.class.php

plusieurs pistes :

- Le chemin du répertoire n'est pas bon (j'ai déjà vu des soucis avec les unlink("./tmp/".$fname.$ext);, je préfére ajouter le véritablement chemin (style DOCUMENT_ROOT...)

- Tu n'as pas défini correctement les dimensions minimum ou alors tu ne les respectes pas.

- Un soucis de chmod (j'ai jamais teste un fopen() sur un répertoire en 700) ou encore tu n'as pas appliqué les bon chmod sur le répertoire tmp (777)

Sinon, j'aime pas trop ça :
if($ext != "jpg" && $ext != "jpeg" && $ext != "gif" && $ext != "png" && $ext != "bmp")

Je préfére récupèrer le type mime, surtout qu'il y a un getimagesize() !

En gros, il va falloir débugger.

Par contre, je me souviens de ce script, il y a quelque temps déjà, quelqu'un voulait de l'aide pour ça (il doit y avoir 1 an)...

Re: Erreur d'upload

Réponse de Sha-ka

Le : 11/04/2009 à 16:59:51

C'était bien le chmod :/ En fait, je l'avais mis en 777 sur les dossiers images et thumb, mais je ne l'avais pas fait pour le dossier tmp, que je n'avais pas vu. Merci :)

Bon, j'abuse, mais une erreur subsiste une fois l'image uploadé :

function save($file,$data)
        {
            global $main_cache_dir;
            if(!is_dir($main_cache_dir))
                @mkdir($main_cache_dir);
            if(!is_dir($main_cache_dir."/search_cache/"))
                @mkdir("$main_cache_dir/search_cache");
            if(!is_dir($main_cache_dir."/cache/"))
                @mkdir("$main_cache_dir/cache");
            /*if(is_writable($file))
            {*/
//ligne 23
                $f = fopen($main_cache_dir.$file,"w");
                //flock($f, LOCK_EX);
                fwrite($f,$data);
                //flock($f, LOCK_UN);
                fclose($f);
            //}
        }



Pour la 1ere ligne d'erreur pas de souci, je la comprend, il n'y a pas de fichier existant, mais pour le reste ? D'avance merci :)

L'erreur :

Warning: fopen(D:\cache\cache/1/post.cache) [function.fopen]: failed to open stream: No such file or directory in /home/www/e0ab686e4953909af439757655c03fdd/web/classes/cache.class.php on line 23

Warning: fwrite(): supplied argument is not a valid stream resource in /home/www/e0ab686e4953909af439757655c03fdd/web/classes/cache.class.php on line 25

Warning: fclose(): supplied argument is not a valid stream resource in /home/www/e0ab686e4953909af439757655c03fdd/web/classes/cache.class.php on line 27



Re: Erreur d'upload

Réponse de luce

Le : 11/04/2009 à 17:03:47

Salut,

==>> D:\cache\cache/1/

Alors \ < windows
et / < linux

Et toi, tu nous prends les 2, tu nous fais une version "milkshake"

Pour moi, c'est déjà une source d'erreur.

Re: Erreur d'upload

Réponse de luce

Le : 11/04/2009 à 17:09:06

Re,

Ensuite, tu as ça :

if(!is_dir($main_cache_dir))
@mkdir($main_cache_dir);
if(!is_dir($main_cache_dir."/search_cache/"))
@mkdir("$main_cache_dir/search_cache");
if(!is_dir($main_cache_dir."/cache/"))
@mkdir("$main_cache_dir/cache");

C'est quoi ce délire ?

En plus, si tu veux pas de soucis, il faudrait y ajouter le chmod

if(!is_dir($main_cache_dir."/cache/"))
@mkdir($main_cache_dir.'/cache', 0777);

Re: Erreur d'upload

Réponse de Sha-ka

Le : 13/04/2009 à 19:05:41

Hello et merci.
Pour faire plus "simple", j'ai supprimé les lignes sources d'erreur, ça ne gêne pas vraiment pour le reste.

Par contre, j'aurais une question à propos du site en lui même vu que tu l'as déjà côtoyé : précédemment, j'avais un tout autre site, et je l'avais plutôt bien rempli (plus de 10000 images et leurs thumb), mais je ne me vois pas trop uploadé 10000 images une par une... Est-il possible de télécharger un paquet d'images ? J'ai tenté par rar mais ça ne prend pas. Et est-il possible de restreindre certaines images à quelques utilisateurs seulement ? D'avance merci, et désolé pour le hs mais je ne sais pas trop où demander ça.

Re: Erreur d'upload

Réponse de luce

Le : 13/04/2009 à 23:35:28

Salut,

Pour l'upload, je pense que tu parles de l'enregistrement SQL, donc oui, tu upload toutes les images (tu lances avant d'aller dodoter) puis ensuite, il te faut developper un petit script qui va ajouter un insert par image (tu ouvres le dossier, et fais un foreach() avec la requete dedans. Le soucis le serveur peu bloquer le script à un moment, et il faut pas le lancer non plus aux heures de pointes. L'ideal, pour ce style d'operation, tu le fais en local, puis après, tu reinjectes ta base de donnée.

Si tu parlais plutot d'envoyer les 10 000 fichiers, alors, il existe des classes, mais pas sur que ce soit installer sur le serveur, donc essai de voir ici :
http://php.net/manual/fr/ref.rar.php
http://php.net/manual/fr/ref.zip.php
et ici
http://fr3.php.net/manual/fr/class.PharData.php

J'ai pas de script tout fait par contre.

Pour ce qui est de restreindre l'accès, il n'y a qu'un seul moyen, le .htaccess, via un mot de passe sur tel ou tel répertoire.

Pour le hs, bah, non, c'est pas vraiment un hs :
"Est-ce que PHP peut décompresser des fichiers => Oui"
"Est-ce que PHP peut interdire l'accès à une image => Non"

Alors, il est ou ton hs ? Ah oui, c'est ton cerveau ? c'est ça ? :-P

Re: Erreur d'upload

Réponse de Sha-ka

Le : 14/04/2009 à 02:35:57

En effet, j'avais pas vu sous cet angle :p
Alors, je tente de déplacer toutes les images, quitte à les renommer par la suite, mais un petit soucis intervient : les images se trouve dans le dossier images dans le dossier 1. Jusqu'au dossier images, tout baigne. Mais je n'arrive pas à accéder au dossier 1. Le chmod est en 745 mais je n'arrive pas à le modifier alors que je suis l'admin. Impossible de déplacer ou d'uploader les images par le biais du ftp... Comment changer ça ?

Re: Erreur d'upload

Réponse de luce

Le : 14/04/2009 à 09:47:04

Salut,

Ah, il doit y avoir un bug avec le serveur, a vu de nez, je dirais que UID n'est pas le tien. Enfin, pour X raison, tu n'y as pas accès, et dans ce cas là, il n'y a que le support de l'hébergeur qui pourra t'aider.

Re: Erreur d'upload

Réponse de Sha-ka

Le : 16/04/2009 à 14:13:23

Hello et merci, le souci est réglé. Si jamais quelqu'un la veut, la voici : http://hosting.infomaniak.ch/support/faq/faq_home.php ; le script marche super bien, ça peut toujours servir :)
Il m'en reste un, un ultime (enfin j'espère !) !

J'ai donc fais le script pour remplir ma bdd d'un seul coup, mais voilà, avec plus de 8000 images, le serveur veut pas...
Il me dit : Fatal error: Allowed memory size of 50331648 bytes exhausted (tried to allocate 26877824 bytes) in /home/www/e0ab686e4953909af439757655c03fdd/web/UpVIsuel.php on line 9

J'ai tenté de réduire le nombre d'images mais l'erreur revient. Donc j'aimerais fractionner pour que ça me fasse ça en plusieurs blocs, de 500 images par exemple, mais je ne sais pas comment faire. Voici le code actuel :


<?php
require "inv.header.php";
$files glob("images/1/*.*");

  
$cpt=1;
    foreach (
$files as $filename) {
       
$filenom=basename($filename);

       
$infos_img getimagesize("images/1/$filenom");
       if(
$infos_img[2]=="1"){
         
$ext=".gif";
       }
       elseif(
$infos_img[2]=="2"){
         
$ext=".jpg";
       }
       elseif(
$infos_img[2]=="3"){
         
$ext=".png";
       }
       elseif(
$infos_img[2]=="4"){
         
$ext=".swf";
       }
       elseif(
$infos_img[2]=="6"){
         
$ext=".bmp";
       }
       else{
         
$ext=".jpg";
       }
       
$date=date("Ymd");


      echo 
''.$cpt.'. '.$filenom.' ('.$infos_img[0].' de large et '.$infos_img[1].' de haut ; '.$ext.')<br />';


$upd=mysql_query("INSERT INTO posts(
creation_date,score,last_comment,image,owner,height,width,ext,rating,local_copy,tags,directory,recent_tags,spam,tags_version,active_date,ip,
reason,parent,post_version,comment_version) VALUES
(NOW(),'0','NULL','$filenom','Sha-ka','$infos_img[1]','$infos_img[0]','$ext','Questionable','1','tagme','1','NULL','0','1','$date','62.129.175.159',
'NULL','0','0','0')"
)
   or die(
mysql_error());


 
$cpt++;
 }
?>


d'avance merci.

Re: Erreur d'upload

Réponse de Sha-ka

Le : 16/04/2009 à 18:17:04

J'ai trouvé la fonction qu'il faudrait utiliser : http://phpdebutant.org/wall1782.php
Mais je ne vois pas trop comment l'utiliser dans mon cas..

Re: Erreur d'upload

Réponse de Maljuna Kris

Le : 16/04/2009 à 19:20:05

Saluton Sha-ka,
Le doute m'empare, dans ton avant-dernier post tu nous donnes un script qui demande l'exécution de 8000 requêtes INSERT à la volée ?
Dis-moi que je rêve.
Ecris toutes ces valeurs dans un fichier csv et charge tout ça via LOAD DATA.

D'autre part, je ne vois pas du tout le rapport entre ce script délirant et la petite fonction sur le wall.

Re: Erreur d'upload

Réponse de Sha-ka

Le : 16/04/2009 à 20:22:56

Hello.
La petite fonction aurait permis de fractionner la requête pour ne pas surcharger le serveur, en limitant le nombre d'INSERT INTO.
D'ailleurs, je ne comprend pas pourquoi ce serait une mauvaise idée ? Certes, j'imagine que pour le serveur, ce n'est pas la meilleure méthode, mais ce script ne sera exécuté qu'une seule et unique fois.
Et je ne comprend pas non plus la méthode du fichier csv. Comment le remplir ? Et pourquoi ce serait une meilleure méthode que l'insert ?

Re: Erreur d'upload

Réponse de luce

Le : 16/04/2009 à 23:54:38

Salut,

J'avais pas dit qu'il fallait le faire en local !

Parce que les 8000 requete, tu risques de te faire avoir par le execution_time.

Donc tu mets une copie de ta base de donnée (serveur) sur ta base de donné (pc maison) puis tu te fais un script pour tout injecter les images (que tu auras mis sur ton disque dur) dans ta base de donnée. Et là, tu t'en fou de savoir si ca consomme ou pas.

Re: Erreur d'upload

Réponse de Sha-ka

Le : 17/04/2009 à 16:44:12

Oui j'avoue, donc là c'est bon, j'ai fais en local et ça a bien marché, merci ^^
Retour à l'index du forum


Ajouter une réponse

Nom :

Email :

Titre :

Message :

Combien font 3 + 4 ?

Mise en forme : gras = [b]...[/b], italic = [i]...[/i], souligné = [u]...[/u], citation = [quote]...[/quote], lien = [url]liens_externe[/url] ou [url nom=texte]liens_externe[/url], code source : [code]...[/code]

Recevoir les réponses par mail :
Oui Non

Mémoriser mon nom et mon email :
Oui Non

 

Charte des forums PHPDébutant

Bienvenue à vous,

Vous voici donc prêt à poster sur les forums de PHPDébutant. Avant toute chose, merci de prendre le temps de lire les quelques lignes qui suivent.

Attention, à partir du moment ou vous postez dans les forums, vous acceptez la présente charte. Si votre message est modéré ou supprimé, vous ne pourrez pas dire que vous n'étiez pas au courant des règles !

Pourquoi une charte

Le but de cette charte est simple : que ces forums restent cordiaux et que les personnes aidant les autres ne se sentent pas lésées, insultées, critiquées. Pour que ces forums fonctionnent, il faut des personnes qui répondent aux questions. Pour que celles ci restent sur le forum, il faut les traiter avec respect, et ne pas les confondre avec des bonnes poires, esclaves, etc...

Mesures de régulation

  • Un nouveau message ne disant pas bonjour, ou insultant, dont le titre est tout en majuscules, pourra être supprimé sans justification (raisons non limitatives).
  • Prenez le temps de vérifier que la question que vous allez poser n'a pas déjà été posée, à l'aide du formulaire de recherche.
  • Prenez également le temps de vérifier que la réponse à votre question ne se trouve pas dans les tutoriaux. Nous ne pouvons pas répeter pour chaque visiteur tous les cours, il sont écrits, profitez-en (dans l'ordre tant qu'à faire) !
  • Nous ne faisons pas de scripts tout prêts. Nous aidons et vous guidons pour que vous puissiez trouver vous même la réponse, ce qui est beaucoup plus formateur.
  • Si vous comptez poster un message publicitaire, abstenez-vous. Au mieux le message sera supprimé, au pire les habitués descendront votre service en flamme.
  • Pour tout message de recrutement, précisez bien votre demande. Inutile de poster pour trouver un développeur pour faire gratuitement votre site de webmastering qui vous rapportera plein de sous. Les seuls coups de mains donnés en développement sont pour des associations ou des sujets passionnant un développeur.
  • Toute personne tenant des propos racistes ou illicites sera bannie et pourra faire l'objet de poursuites.
  • L'humour étant très présent sur ces forums, ne réagissez pas violemment à des propos qui pourraient être à prendre au second degré et avec de l'humour.
  • Attention aux trolls ! Leur multiplication peut entraîner la mort des forums, et sans forum, plus d'aide !
  • Respectez les thèmes des forums. Pensez aussi à vérifier que votre message n'a pas été déplacé si vous le croyez effacé.

Conseils

  • N'oubliez pas que les personnes à qui vous vous adressez sont des bénévoles qui donnent de leur temps pour vous. Si vous êtes méchants avec eux, il n'aideront plus et vous n'aurez plus d'aide !
  • Ne soyez pas pressé. Nous avons une vie aussi, et nous ne sommes par forcément tout le temps disponibles.
  • N'oubliez pas que les smileys sont la pour faire comprendre l'humeur dans laquelle vous rédigez un message. Il est indispensable de mettre des smileys quand vous faites de l'humour, sinon le message pourrait être mal perçu (ca serait quand même idiot de plomber l'ambiance en faisant de l'humour !).
  • Surveillez votre orthographe, nous ne vous demandons pas d'être littéraire, mais que votre message soit au moins compréhensible. Evitez à tout prix le style SMS.
  • Expliquez clairement le problème, ce n'est pas toujours facile, mais mieux vaut essayer de le faire le plus possible.
  • Ne postez pas de questions trop vagues du genre "comment faire un forum". Cela ne sert à rien, cela ne s'explique pas sur un coin de forum.
  • Mettez un titre clair, correspondant au sujet que vous allez poster. A l'aide, au secours, etc... ne sont pas d'une grande utilité pour ceux qui vont vous aider. Parfois nous passons en coup de vent, et si nous ne savons pas ce que va contenir le message, nous ne le regarderons même pas.
  • Ne mettez par [URGENT] ou autre joyeuseté du genre dans vos titres de messages. Cela irrite les gens (il y'a plus urgent dans la vie, pensez aux gens qui meurent de faim ou ayant besoin des pompiers, ça c'est urgent), et vous n'aurez pas votre réponse plus vite pour autant.
  • Si vous connaissez déjà à quel domaine votre question d'adresse (par exemple mysql, html, php, javascript), n'hésitez pas à le marquer au début de votre message, avec un [html] par exemple (notez les minuscules).
  • Ne dites pas "ça marche pas". Il y a toujours des raisons. Je vous invite à consulter le tutorial "ça marche pas" qui vous aidera à mieux expliquer votre problème.
  • Ne postez pas 36000 lignes de code. Sur le forum, le code apparaît non coloré et sans indentation, ce qui est illisible. Au dessus de 5 lignes, plus personne ne lit et vous n'aurez pas de réponse. Utilisez le wall
  • En règle générale restez courtois et clair, n'oubliez pas que la politesse fait partie de la vie courante. Il est de bon ton de dire bonjour même pour une réponse, même plusieurs fois dans la journée (ceux qui vous lisent n'ont pas forcément lu vos autres messsages)

La Fin

Avec tout ces conseils vous augmenterez les chances de réponse, leur pertinence et leur rapidité

Voilà, ça sera tout, bonne écriture :)

Fermer les règles et poster un message


www.phpdebutant.org © 2012 - L'équipe de phpDebutant - Hébergement : WDMédia-hébergement