Logiciel écrit pour PHP4 ne tourne pas sous PHP5

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Logiciel écrit pour PHP4 ne tourne pas sous PHP5

par guyanel » 04 nov. 2007, 11:33

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

Code : Tout sélectionner

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

par guyanel » 03 nov. 2007, 11:53

J'ai testé ce même code sous Easyphp1.8, ça marche très bien et
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 ?????

C'est donc bien lié à l'environnement, mais qu'est ce qui cloche?

par guyanel » 02 nov. 2007, 14:14

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: \




:roll:

par guyanel » 02 nov. 2007, 13:29

merci pour la réponse.
- Que ta classe soit correctement configurée, en l'occurence les propriétés root, la constante SEP, et les autres éléments requis pour la partie SQL.
Ce qui précède est de l'hébreu pour moi, désolé.

php.ini doit être OK je pense:

Code : Tout sélectionner

; Whether to allow HTTP file uploads. file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). upload_tmp_dir = d:/INTRANET/Apache2.2/php5/uploadtemp ; Maximum allowed size for uploaded files. upload_max_filesize = 2M
Je vérifie les droits d'écriture.

par Invité » 02 nov. 2007, 12:11

Bonjour,

ton bout de code est effectivement clean et ne devrait pas poser de probleme meme si quelques securisations des parametres s'imposent mais sont peut etre effectués en amont (méthode secure a ce qu'il semble, mais attention aussi au tmp_name).

Le probleme semble etre lié a ton environnement systeme ou au parametres de la classe.

En effet l'upload requiert :

- D'etre autorisé pour le php (voir php.ini)
- Que la taille autorisée soit suffisante pour tes besoins (voir php.ini)
- Que le repertoire dans lequel tu souhaite deplacer les fichiers soit ouvert en écriture pour ton code php (droit d'écriture fixé via le FTP par exemple)

- Que ta classe soit correctement configurée, en l'occurence les propriétés root, la constante SEP, et les autres éléments requis pour la partie SQL.

Logiciel écrit pour PHP4 ne tourne pas sous PHP5

par guyanel » 02 nov. 2007, 11:28

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",
	);
Merci pour vos éclairages :wink: