Bug APC + PHP5.2... J'y comprend riend !
Posté : 30 août 2008, 08:45
Bonjour,
J'ai perdu ma nuit sur une chose à priori simple: De upload de fichier avec APC 3.0.19 et PHP 5.2.6, beaucoup d'aide sur la toile, tout fonctionne, avec affichage de la vitesse durant le transfert, c'es jolie comme tout mais voilà
le problème: dès que le fichier est uploadé: il disparait et move_uploaded_file(...) renvoi FALSE
!
J'ai essayé toutes les config possible (ou presque) d'APC dans le php.ini, les dossiers /www/tmp et /www/tmp/upload ont pour autorisations 777 nobody:nogroup
Quelques parametres du php.ini
La section [APC] actuelle du php.ini:
Sans oublier la page appelée par la propriété 'action' de la form:
Quant au retour de apc_fetch() pour lui tout est OK: done = 1; cancel_upload = 0, size Ok, etc...
pour les logs (PHP ou APACHE): Pas la moindre petite ligne utile !
Sinon l'upload sans APC fonctionne bien
Voilà, là sans vous je suis perdu...
J'ai perdu ma nuit sur une chose à priori simple: De upload de fichier avec APC 3.0.19 et PHP 5.2.6, beaucoup d'aide sur la toile, tout fonctionne, avec affichage de la vitesse durant le transfert, c'es jolie comme tout mais voilà
le problème: dès que le fichier est uploadé: il disparait et move_uploaded_file(...) renvoi FALSE
J'ai essayé toutes les config possible (ou presque) d'APC dans le php.ini, les dossiers /www/tmp et /www/tmp/upload ont pour autorisations 777 nobody:nogroup
Quelques parametres du php.ini
Code : Tout sélectionner
file_uploads = On
upload_tmp_dir = /www/tmp
upload_max_filesize = 100M
max_execution_time = 30;
max_input_time = 38800;
memory_limit = 100M
post_max_size = 8M
error_reporting = E_ALL
Code : Tout sélectionner
apc.shm_segments = 1
apc.optimisation = 0
apc.shm_size = 128
apc.ttl = 7200
apc.user_ttl = 7200
apc.num_files_hint = 1024
apc.mmap_file_mask= /www/tmp/vidUp.XXXXXX
apc.enable_cli = 1
apc.stat = 1
apc.rfc1867 = on
apc.write_lock = 1;
apc.filters NULL
apc.max_file_size = 200M
apc.file_update_protection = 0;
session_start();
if ($_SERVER['REQUEST_METHOD']=='POST')
{
if (isSet($_FILES["Filedata"]))
{
file_saved();
}
}
else ...
function file_saved()
{
$FileName = $_FILES['Filedata']['name'];
$FileSize = round($_FILES['Filedata']['size']/1024);
$FileType = $_FILES['Filedata']['type'];
$FileTemp = $_FILES['Filedata']['tmp_name'];
$_SESSION['VideoFile1'] = "vid".md5(uniqid(rand(),true));
$_SESSION['TmpVideoFile1'] = $_FILES["Filedata"]["tmp_name"];
$_SESSION['addVidStep']="HDZj437zjka9453";
move_uploaded_file($_FILES["Filedata"]["tmp_name"],"/www/tmp/upload/".$_FILES['VideoFile1']);
exit;
}
Pour finir: voilà le contenu de ces variables lors d'un test:
$FileTemp = '/www/tmp/php8klIkH';
$FileName = '1273.flv';
$FileSize = 55582;
$FileType = 'application/octet-stream';
$FileTemp = $_FILES['Filedata']['tmp_name'];
$_FILES["Filedata"]["error"]. = 0;
Pour cet exemple, un petit ls m'a montrait que le fichier /www/tmp/php8klIkH' existait bien... jusqu'a la fin du transfert, où ls devient muet Quant au retour de apc_fetch() pour lui tout est OK: done = 1; cancel_upload = 0, size Ok, etc...
pour les logs (PHP ou APACHE): Pas la moindre petite ligne utile !
Sinon l'upload sans APC fonctionne bien
Voilà, là sans vous je suis perdu...