Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Pages: 1
Bonjour à tous.
Je suis novice en php, j'aurais besoin d'aide pour débugger un logiciel qui tourne parfaitement sous php4 mais pas sous php5.
Il s'agit d'un gestionnaire de documents, qui permet de mettre un ligne une documenthèque. Je n'ai pas écrit le code, mais il semble ne plus y avoir de support sur ce projet open source.
Il est installé sous Apache 2.2.6 + php 5.2.4 + MySql 5.0.45
La fonction d'upload ne fonctionne pas, la voici:
function uploadFile($dir, $file, $fileComment)
{
$fileName = strtolower($file["name"]);
$fileTmpName = $file["tmp_name"];
$fileSize = $file["size"];
$folderPath = $this->folderPath($dir);
$fileName = $this->secureFile($fileName);
if (file_exists($this->root . "files" . $folderPath . SEP . $fileName))
{
$this->error = 5;
return false;
}
if (move_uploaded_file($fileTmpName, $this->root . "files" . $folderPath . SEP . $fileName))
{
$q = "INSERT INTO " . TABLE_PREFIX . "files (id_folder, id_user, file_name, file_size, file_mtime, file_comment) VALUES ('" . $dir ."', '" . $_SESSION["Sid_user"] . "', '" . quote($fileName) . "', '" . $fileSize . "', NOW(), '" . quote($fileComment) . "')";
query($q);
$this->updateFolderSize($dir, $fileSize, "+");
$this->updateFolderTime($dir);
return true;
}
return false;
}A la mumière de mes faibles connaisances, il semblerait que le souci vienne de move_upload_file qui renvoie FALSE.
lorsque j'éxécute la fonction d'upload, il n'y a pas d'erreur mais le fichier n'est pas uploadé, ça me renvoie juste "OK" sachant que:
{
var $errors = array (
0 => "OK",
);Lorsque j'uplode le fichier 10672.pdf par ex
j'ai pour
$fileName: 10672.pdf (normal)
$fileTmpName: D:INTRANETApache2.2php5uploadtempphpDF.tmp (euh... pas de slash?)
SEP: \
Merci pour vos éclairages :wink:
Hors ligne
Salut,
Bizarre ton truc, je commencerai par regarder dans quel répertoire temporaire le fichier est uploadé histoire de voir si il est bien présent.
Tu peux voir lequel est défini avec phpinfo() => regarde la valeur de upload_tmp_dir
Sinon je crois qu'il peut aussi y avoir un problème de droits avec Apache si tons serveur tourne sur windows, ex :
Définir dans php.ini le chemin d'un répertoire temporaire si ce n'est pas déjà fait :
upload_tmp_dir = "C:\temp"
Ajouter dans le fichier de conf Apache les droits d'accès qui vont bien :
<Directory "C:\temp">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>Enfin, pas sur que ce soit la solution mais on sais jamais...
Hors ligne
Merci pour ces suggestions, mon upload_tmp_dir est bien défini, c'est "D:\INTRANET\Apache2.2\php5\uploadtemp"
Donc si je fais tourner ce code sous Easyphp 1.8,
echo $fileTmpName me renvoie C:/Program Files/EasyPHP1-8\tmp\phpE.tmp
si je le fais tourner sous Apache 2.2.6 + php 5.2.4 + MySql 5.0.45
echo $fileTmpName me renvoie D:INTRANETApache2.2php5uploadtempphpDF.tmp
Pourquoi les slash disparaissent-ils ?????
Hors ligne
Il faut mettre ce paramètre dans php.ini:
; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = Off
Hors ligne