Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

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.
 
  • Portail PHP
  •  » PHP - SQL
  •  » Logiciel écrit pour PHP4 ne tourne pas sous PHP5, pourquoi?(Résolu)

#1 02-11-2007 09:41:21

php_bébé
Membre
Date d'inscription: 02-11-2007
Messages: 4

Logiciel écrit pour PHP4 ne tourne pas sous PHP5, pourquoi?

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:

Code:

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:

Code:

{
    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

 

#2 02-11-2007 14:49:29

Shiva
Moderateur
Lieu: BONNEUIL SUR MARNE
Date d'inscription: 15-11-2005
Messages: 299
Site web

Re: Logiciel écrit pour PHP4 ne tourne pas sous PHP5, pourquoi?

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 :

Code:

upload_tmp_dir = "C:\temp"

Ajouter dans le fichier de conf Apache les droits d'accès qui vont bien :

Code:

<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

 

#3 03-11-2007 05:49:01

php_bébé
Membre
Date d'inscription: 02-11-2007
Messages: 4

Re: Logiciel écrit pour PHP4 ne tourne pas sous PHP5, pourquoi?

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

 

#4 04-11-2007 04:32:31

php_bébé
Membre
Date d'inscription: 02-11-2007
Messages: 4

Re: Logiciel écrit pour PHP4 ne tourne pas sous PHP5, pourquoi?

Il faut mettre ce paramètre dans php.ini:

Code:

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

Hors ligne

 

#5 04-11-2007 14:42:49

Shiva
Moderateur
Lieu: BONNEUIL SUR MARNE
Date d'inscription: 15-11-2005
Messages: 299
Site web

Re: Logiciel écrit pour PHP4 ne tourne pas sous PHP5, pourquoi?

Ouais ben en effet, j'y étais pas :-)
Bon à savoir en tout cas

Hors ligne