User Tools

Site Tools


informatique:logiciels:php

langage interprété programmation web internet

PHP

Installation sous Windows

Installer apache2

  • lancer l'exe simplement et suivre la procédure d'installation, très intuitive

Dans httpd.conf :

  • mettre à jour le DocumentRoot et ses règles <Directory “D:/htdocs”>
  • ajouter le log pour les stats CustomLog D:/pteu.ath.cx.log combined
  • ajouter des alias

Installer PHP

  • dézipper php-x.y.z-Win32.zip dans c:\program files par ex
  • copier php.ini-recommanded dans c:\Windows\ ; le renommer en php.ini

dans php.ini :

  • 'extension_dir' indique le rep d'install\extensions (ex: c:\php\extensions)

NB : on remarquera les antislash

dans httpd.conf

  • dans la section “Dynamic Shared Object (DSO) Support” :
LoadModule php4_module "C:/Program Files/php-4.4.1-Win32/sapi/php4apache2.dll"
AddType application/x-httpd-php .php .php3 .php4
PHPIniDir "C:/Program Files/php-4.4.1-Win32"
  • dans <IfModule mod_dir.c> : DirectoryIndex index.html index.php
  • copier php4ts.dll dans le mm repertoire que php4apache.dll càd php/sapi/ (ou dans %SYSTEMROOT% ou dans apache/)

Ressources

Envoyer un fichier via un formulaire

Configuration de PHP

Il est nécessaire de vérifier les options suivantes dans le fichier de conf de php (souvent /etc/php.ini) ; celles-ci sont par défaut sous NetBSD :

  • file_uploads = On pour autoriser l'envoi de fichiers
  • upload_tmp_dir = /tmp définit le répertoire temporaire accueillant les fichiers uploadés
  • upload_max_filesize = 2M définit la taille maximale autorisée pour les fichiers
  • post_max_size = 8M taille maximum des données d'un formulaire

Le formulaire en question

<form name="formTest" method="post" action="<?echo $_SERVER["PHP_SELF"];?>" enctype="multipart/form-data">
 <input type="hidden" name=MAX_FILE_SIZE  value="2048" />
 <input type="file" name="fichier" />
 <input type="submit" value="envoyer" />
</form>

Le champ MAX_FILE_SIZE permet de limiter la taille du fichier.

Le traitement

On utilise la variable superglobale $_FILES

<pre><? print_r($_FILES); ?></pre>

qui affiche le contenu du tableau :

Array
(
    [fichier] => Array
        (
            [name] => toto.txt
            [type] => text/plain
            [tmp_name] => /tmp/php00104b
            [error] => 0
            [size] => 38
        )
)

Du coup, on peut tester le code d'erreur de l'envoi :

  • 0 (ou UPLOAD_ERR_OK) : pas d'erreur
  • 1 (UPLOAD_ERR_INI_SIZE) : le fichier dépasse la limite autorisée dans le php.ini
  • 2 (UPLOAD_ERR_FORM_SIZE) : le fichier dépasse la limite fixée dans le formulaire HTML
  • 3 (UPLOAD_ERR_PARTIAL) : upload interrompu
  • 4 (UPLOAD_ERR_NO_FILE) : fichier de taille nulle

On peut changer le répertoire du fichier uploadé grâce à la fonction move_uploaded_file(SRC, DEST).

Divers

  • si on rencontre de pb de header, il faut règler le buffer de sortie : éditer php.ini et modifier :

output_buffering = 4096

informatique/logiciels/php.txt · Last modified: 2013/10/14 20:45 by 127.0.0.1