From dcba1786eb724089fca35554b094958687035d70 Mon Sep 17 00:00:00 2001 From: gcolpart Date: Fri, 8 Sep 2017 03:46:31 +0200 Subject: [PATCH] ajout de sections --- HowtoPHP.md | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 2 deletions(-) diff --git a/HowtoPHP.md b/HowtoPHP.md index 1360db8e..4de4f8fa 100644 --- a/HowtoPHP.md +++ b/HowtoPHP.md @@ -9,6 +9,12 @@ title: Howto PHP [PHP](http://php.net/) est un langage de programmation populaire pour le développement web. PHP peut s'utiliser en CLI (ligne de commande), via mod_php (module intégré à [Apache](HowtoApache)) ou via FPM (FastCGI Process Manager). +Il existe [plusieurs versions de PHP](http://php.net/supported-versions.php). +Voici les versions de PHP actuellement supportées sous Debian : + +* Debian 7 : PHP 5.4.45 +* Debian 8 : PHP 5.6.19 +* Debian 9 : PHP 7.0.10 ## Installation @@ -71,7 +77,6 @@ PHP-FPM (FastCGI Process Manager) est une façon alternative d'utiliser PHP avec > ~~~ - ## Configuration @@ -226,7 +231,81 @@ DocumentRoot /home/bench/www/ ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php5-fpm.sock|fcgi://localhost/home/foo/www/" ~~~ -#### Configuration mod_php +### Configuration mod_php + +Avec mod_php on peut forcer la plupart des options du php.ini dans la configuration Apache. + +Par exemple, au sein d'un VirtualHost on peut mettre les paramètres suivants : + +~~~ + + + #php_admin_flag engine off + #AddType text/html .html + #php_admin_flag display_errors On + #php_flag short_open_tag On + #php_flag register_globals On + #php_admin_value memory_limit 256M + #php_admin_value max_execution_time 60 + #php_admin_value upload_max_filesize 8M + #php_admin_flag allow_url_fopen Off + php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f www-XXX" + php_admin_value open_basedir "/usr/share/php:HOME_DIR/XXX:/tmp" +~~~ + + +## Sessions PHP + + + +Lorsque des sessions PHP sont utilisées (fonctions session_*() dans le code), des informations sont stockées côté serveur. +Le navigateur conserve uniquement identifiant pour accéder à ces informations, stockés dans un cookie ou une variable du type PHPSESSID dans l'URL (cela tend à être obsolète). + +Par défaut, ces informations sont conservées dans des fichiers sur le disque (un fichier par session) mais il est conseillé d'utiliser +une méthode plus performante si vous avez un serveur dédié. Évidemment il est EXCLU de stocker les sessions dans une base de données SQL +sauf si vous voulez payer cher pour avoir un site lent et tuer des bébés phoques. + +* La plus simple si votre site web est en mono-serveur ou en mode sticky : monter le répertoire qui stocker les fichiers en *TMPFS*. +Cela se fait par exemple en ajoutant la ligne suivante dans votre _fstab_ : + +~~~ +tmpfs /var/lib/php5 tmpfs defaults,noexec,nosuid,nodev,size=256m 0 0 +~~~ + +* Les sessions peuvent être stockées dans un ou plusieurs serveurs *Memcached* avec les paramètres suivants : + +~~~ +session.save_handler = memcached +session.save_path = "192.0.43.10:11211,192.0.43.11:11211" +~~~ + +Par contre, contrairement aux idées reçues, ce n'est pas conseillé. Memcached est fait pour "cacher" et non "stocker". +Voir le blog d'un développeur de Memcached à ce sujet : + +* Les sessions peuvent être stockées dans un ou plusieurs serveurs *Redis* avec les paramètres suivants : + +~~~ +session.save_handler = redis +session.save_path = "tcp://192.0.43.10:6379?auth=,tcp://192.0.43.11:6379?auth=" +~~~ + +* Les sessions peuvent être stockées dans [Sharedance](http://www.pureftpd.org/project/sharedance), un petit logiciel spécialement conçu pour +stocker les sessions PHP. Il n'est plus maintenu, mais très simple, il est toujours fonctionnel. Voici un exemple d'utilisation : + +~~~ +auto_prepend_file = /usr/local/etc/sharedance.php +;session.save_handler = user +;session.save_handler = files +~~~ + +* Les sessions peuvent être stockées dans *Tokyo Tyrant/Tycoon* avec les paramètres suivants : + +~~~ +tokyo_tyrant.session_salt="randomlongstring" +session.save_handler=tokyo_tyrant +session.save_path="tcp://192.0.43.10:1978,tcp://192.0.43.10:1978" +~~~ + ## Composer @@ -280,3 +359,14 @@ Composer version 1.5.1 2017-08-09 16:07:22 ~~~ +## FAQ + +* J'ai un message d'erreur du type : _/usr/lib/php5/20090626/xcache.so doesn't appear to be a valid Zend extension_ + +Remplacer `zend_extension=` par `extension=` pour le chargement du module PHP. + +* Certaines fonctions GD n'existent pas : imagerotate(), imageantialias(), etc. + +Pour des raisons de sécurité et de maintenabilité, la version de PHP de Debian n'embarque par le GD modifié par PHP. Ces fonctions ne sont +pas disponibles. Pour contourner ce problème, nous conseillons d'écrire vos propres fonctions (il y a des exemples sur +Cela peut éventuellement être mis dans un fichier partagé qui sera ensuite inclus systématiquement dans votre code lorsque l'utilisation est nécessaire.