ajout de sections

This commit is contained in:
gcolpart 2017-09-08 03:46:31 +02:00
parent bae238fe38
commit dcba1786eb

View file

@ -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
<http://php.net/manual/en/install.fpm.configuration.php>
@ -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 :
~~~
<VirtualHost *:80>
#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
<http://php.net/manual/en/book.session.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 : <http://dormando.livejournal.com/495593.html>
* 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=<password>,tcp://192.0.43.11:6379?auth=<password>"
~~~
* 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 <http://php.net).>
Cela peut éventuellement être mis dans un fichier partagé qui sera ensuite inclus systématiquement dans votre code lorsque l'utilisation est nécessaire.