IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Upload] Faire en sorte de ne plus obtenir l'erreur 500 [Fait]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut [Upload] Faire en sorte de ne plus obtenir l'erreur 500
    Bonjour à tous,

    j'ai besoin d'uploader des images de maxi 2Mo.

    Voici mes contraintes (incontournables pour diverses raisons) :

    - hébergement mutualisé (= time_out au bout de 30" en php)
    - upload à partir du navigateur (pas de client FTP)
    - pas de CGI

    J'utilise jusqu'à présent un formulaire classique php, le problème est que certains utilisateurs ont une erreur 500 (due au time_out d'après mon hébergeur, bien que leur connexion ne soit pas forcément lente).

    Quelqu'un connait-il un moyen pour que n'importe qui puisse effectuer l'upload sans que ça plante?

    Merci de vos réponses . . .

  2. #2
    Membre émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Par défaut
    Tu es confronté à des contraintes techniques insumontable.

    Mais en fait tu aurais bien un moyen, avec la fonction ini_set. Encore faut-il que ton hébergeur l'autorise, mais il ne devrait pas y avoir de contre indication.

    Dans le script de ton upload, tu met alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ini_set("max_execution_time",60);
    Ainsi, tu passe de 30 secondes à 60.

    Bon, sache tout de même que les valeurs que tu annonces sont celles par défaut pour toute config PHP (mutualisé ou non).
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  3. #3
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut
    Merci de ton lien SubO, mais j'ai visité beaucoup de discussions du genre, et soit j'ai mal lu, soit je n'ai pas encore de solution.

    J'ai testé par exemple l'envoi par ftp, mais comme la connexion ftp se fait en php, ... le time out est toujours actif.

    J'ai testé aussi en flash...marche pas non plus (erreur 500),

    J'ai jeté un oeil sur ajax, mais on a besoin de CGI...

    Par contre, quelques détails :

    Mon hébergeur (nuxit) n'utilise pas le safe mode.
    Par contre, le time out est bloqué à 30", d'après ce qu'ils m'ont dit, impossible de contourner.

    J'ai quand même essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(!ini_set("memory_limit",'50M')) {echo "memory_limit";}//pour éviter "Fatal error: Allowed memory size"
    if(!ini_set("max_execution_time",120)) {echo "max_execution_time";}
    if(!ini_set("max_input_time",120)) {echo "max_input_time";}
    if(!ini_set("upload_max_filesize",8192)) {echo "upload_max_filesize";}
    if(!ini_get('safe_mode'))
    { // Safe Mode non-activé, on met la limite de temps d'execution à 2'.
    set_time_limit(120);
    j'essaie une image de 5Mo, et...erreur500...

  5. #5
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Citation Envoyé par migli
    j'essaie une image de 5Mo, et...erreur500...
    • L'upload est limité à 2Mo en général... Pour pouvoir uploader des fichiers plus volumineux, il faut utiliser le CGI justement.

    • Pour le FTP, c'est pareil, puisque ça ne fonctionne que de serveur à serveur, il faut donc tout de même passer par l'upload http pour envoyer un fichier du client vers le serveur.

    • Sinon, reste la solution d'utiliser une applet Java ou un programme RAD pour découper le fichier en bloc de 2Mo, les envoyer sur le serveur, avant de refusionner le fichier...

    • En dernier recours, tu peux utiliser des sites intermédiaires qui proposent l'upload de fichiers volumineux et les conservent quelques jours sur leur serveur... Tu peux peut-être ensuite essayer de le transférer sur ton serveur...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Par défaut
    les utilisateurs doivent utiliser un système ultra simple, déposer leur fichier et c'est tout. En plus des images, j'ai des insertions dans une BDD, donc utiliser un site tiers n'est pas ma solution.

    Java, ça serait bien, mais je n'y connais rien, je n'ai rien sous la main qui puisse m'aider.

    Après deux jours de galère, je me résigne : je teste le max_time du serveur, je lance un chronomètre asynchrone, et lorsque le temps est terminé, je renvoie vers une page explicative, qui propose diverses solutions à l'utilisateur (redimensionner ses images avant upload, entre autres).

    juste un détail : ces complications sont volontaires, je ne veux pas utiliser htaccess pour le renvoi.

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/11/2006, 13h26
  2. Réponses: 4
    Dernier message: 02/09/2006, 20h41
  3. Réponses: 3
    Dernier message: 27/04/2006, 09h03
  4. J'ai un TH dans mon tableau et j'aimerais faire en sorte qu'
    Par hstlaurent dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 12/09/2005, 18h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo