ajout de sections
This commit is contained in:
parent
bae238fe38
commit
dcba1786eb
94
HowtoPHP.md
94
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](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).
|
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
|
## Installation
|
||||||
|
|
||||||
|
@ -71,7 +77,6 @@ PHP-FPM (FastCGI Process Manager) est une façon alternative d'utiliser PHP avec
|
||||||
> ~~~
|
> ~~~
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
<http://php.net/manual/en/install.fpm.configuration.php>
|
<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/"
|
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
|
## 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.
|
||||||
|
|
Loading…
Reference in a new issue