move_uploaded_file n'a pas de travail, pas d'erreur
Je suis en cours d'exécution l'exécution d'un script qui se déplace un fichier téléchargé avec move_uploaded_file()
. Je l'ai fait des milliers de fois, mais pour une raison que ça ne fonctionne pas. J'ai confirmées suivantes:
<form>
à l'aide demethod="post"
et de corrigerenctype
- de fichier correct référencé à partir de la forme
- répertoire dispose des autorisations
777
- tous les
memory_limit
,max_execution_time
, etc sont mis à super haute paramètres pour éviter les délais d'attente
En gros, le script ci-dessous retourne avec juste Your image is too big.
. J'ai également activé TOUTES les erreurs à l'affichage et ne comprends toujours pas une erreur. Des idées?
$time = time();
$target_path = "/absolute/path/to/temp/directory/temp/";
$target_path = $target_path.$time.'.jpg';
if(move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) {
} else{
$error .= '<li>Your image is too big.</li>';
}
À l'aide de 1and1 hébergement avec php.ini hack 😛
Mise à JOUR de 1
Je voudrais ajouter que la réponse du script se produit exactement au bout de 60 secondes.
Mise à JOUR 2
Nous avons peut-être quelque part avec cette. Juste print_r($_FILES)
et ceci est le résultat de la matrice:
Array (
[image] => Array (
[name] => P2120267.JPG
[type] =>
[tmp_name] =>
[error] => 1
[size] => 0
)
)
Donc ce qui m'amène à croire que le fichier n'est pas téléchargé correctement sur le serveur ou quelque chose? J'ai vérifié et le formulaire de publication est <form action="" method="post" enctype="multipart/form-data">
. Ainsi, à partir de ce que je peux dire, le fichier n'est pas téléchargé sur le serveur de la temp?
Mise à JOUR 3
Remarqué la [error] => 1
dans le tableau ci-dessus. C'est apparemment vers le bas pour la taille du fichier est plus gros que le upload_max_filesize
. Cependant, lorsque j'ai mis ce que 128M
, j'obtiens un écran blanc de la mort au bout de 60 secondes. Le fichier que je suis un téléchargement de 2,5 MO
Voici mon php.fichier ini:
register_globals=off
memory_limit = 128M
max_execution_time=3600
post_max_size = 128M
upload_max_filesize= 128M
Mise à JOUR 4
Avec les détails ci-dessus, il semble que je suis un WSOD, mais l'image est upoaded. Alors, comment arrêter les WSOD? Je ne peux pas trouver toutes les erreurs liées n'importe où.
MISE À JOUR DE 5 - TROUVÉ!
Honte sur moi de ne pas vous donner les gars, tout le code. Il ressemble à son à faire avec cette ligne:
resizeImage($feedBurnerStatsSource, PHOTOMSGDIR.'temp/'.$time.'-tmp.jpg',$width,$height);
Dans le code suivant:
function resizeImage($source, $destination = NULL,$wdt, $height = NULL){
if(empty($height)){
//Height is nit set so we are keeping the same aspect ratio.
list($width, $height) = getimagesize($source);
if($width > $height){
$w = $wdt;
$h = ($height / $width) * $w;
$w = $w;
}else{
$w = $wdt;
$h = $w;
$w = ($width / $height) * $w;
}
}else{
//Both width and Height are set.
//this will reshape to the new sizes.
$w = $wdt;
$h = $height;
}
$source_image = @file_get_contents($source) or die('Could not open'.$source);
$source_image = @imagecreatefromstring($source_image) or die($source.' is not a valid image');
$sw = imagesx($source_image);
$sh = imagesy($source_image);
$ar = $sw/$sh;
$tar = $w/$h;
if($ar >= $tar){
$x1 = round(($sw - ($sw * ($tar/$ar)))/2);
$x2 = round($sw * ($tar/$ar));
$y1 = 0;
$y2 = $sh;
}else{
$x1 = 0;
$y1 = 0;
$x2 = $sw;
$y2 = round($sw/$tar);
}
$slate = @imagecreatetruecolor($w, $h) or die('Invalid thumbnail dimmensions');
imagecopyresampled($slate, $source_image, 0, 0, $x1, $y1, $w, $h, $x2, $y2);
//If $destination is not set this will output the raw image to the browser and not save the file
if(!$destination) header('Content-type: image/jpeg');
@imagejpeg($slate, $destination, 75) or die('Directory permission problem');
ImageDestroy($slate);
ImageDestroy($source_image);
if(!$destination) exit;
return true;
}
Donc, WSOD signifie que son une sorte de mourir sans un message. Des idées?
print_r($_FILES);
pour voir l'intégralité des FICHIERS de tableau. Il peut contenir un code d'erreur. Votre message d'erreur n'est pas vraiment btw, parce que vous ne faites pas une vérification de la taille et de tous condition d'erreur sera de retour "image trop grande"Nom de fichier peut ne pas être valide. C'est que le fichier de jeu de clés?
Si vous n'obtenez pas de messages d'erreur, essayez de
copy()
au lieu de move_uploaded_file()
. Aussi jeter un oeil à la error.log
dans de tels cas.Que target_path semble particulièrement étrange, c'est la fonction error_reporting ?
essayez
echo
sur $_FILES['image']['tmp_name']
et $target_path
dans else
bloc à vérifier sont les chemins d'accès correct.
OriginalL'auteur David | 2011-04-13
Vous devez vous connecter pour publier un commentaire.
Juste pour vérifier, c'est la
post_max_filesize
réglé à un niveau élevé? Parce que, selon php.net:Quelque chose à considérer.
pour plus d'info voir ce lien et faites défiler jusqu'à la
post_max_filesize
sectionMise à JOUR
Dans mon expérience, si vous obtenez un WSOD, il est généralement à faire pour
error_reporting
etdisplay_errors
être désactivé OU que lememory_limit
être atteint. Dans le script au dessus j'ai l'habitude de définir lamemory_limit
à 1024M pour vérifier qui n'est pas le problème et le tourerror_reporting
etdisplay_errors
... donc mettre ce avant l'upload de fichier:Qui, normalement, se débarrasse de la WSOD et vous donne et de l'erreur de travailler avec.
Mise à JOUR
Avez-vous essayé en enlevant le
@
la suppression d'erreur en face de toutes vos fonctions à voir, ils sont la production d'une erreur? Aussi ce que vous êtes exécution et les délais d'attente d'entrée? et Pouvez-vous vérifier ce que les en-têtes sont envoyés? (assurez-vous qu'il estContent-Type=text/html;
)voir les mises à jour ci-dessus, vous pourriez être sur quelque chose.
tout ça, toujours pas d'erreur et toujours obtenir la même erreur = 1
Ok, l'image ressemble à son être transféré peu de temps après la WSOD...mais j'ai besoin de prévenir le WSOD.
avez-vous essayé en enlevant le "@" suppression d'erreur en face de toutes vos fonctions à voir, ils sont la production d'une erreur? Aussi ce que vous êtes exécution et les délais d'attente d'entrée?
OriginalL'auteur sbditto85
Essayez de changer le chemin d'accès cible à un non répertoire temp.
Après certaines mises à jour ici est la résolution:
...ajouter ceci au début de votre fichier qui traite de l'upload.
Avez-vous essayer d'ajouter de la ci-dessus? Le réglage s'appliquent à tous les télécharger endroits.
votre code fonctionne. merci
OriginalL'auteur Brant Messenger
[error] => 1
signifie Le fichier téléchargé excède la directive upload_max_filesize dans php.ini.http://www.php.net/manual/en/features.file-upload.errors.php
Donc, vous devez modifier vos paramètres.
comme pour le php.fichier ini que vous avez posté ici, il n'a tout simplement pas d'affecter votre PHP. vous devez vous déplacer dans un endroit plus approprié emplacement
OriginalL'auteur Your Common Sense
J'ai eu le même problème la semaine dernière, c'était juste parce que mon serveur espace disque était plein! J'espère que ça aidera quelqu'un...
OriginalL'auteur Daniel E.
J'ai eu le même problème, mais j'ai voulu écraser un fichier, j'ai donc supprimer l'ancien fichier et qu'il fonctionne.
OriginalL'auteur blu