Configuration PHP

Le fichier PHP.ini

Le fichier PHP.ini contient toutes les directives essentielles de réglage.

  • Taille des fichiers téléchargeables

  • Safe-Mode

  • Affichage et traitement des erreurs

  • Communication avec MySQL

Danger

Attention, les directives de ce fichier sont très importantes pour la sécurité d’un serveur en production. Il faudra y veiller et les vérifier minutieusement dans ce cas. Sous certaines distributions de Linux, il existe 2 versions de ce fichier une de developpement et une autre pour un serveur de production. N’oubliez pas d’activer la bonne version selon le contexte et de la vérifier en tous les cas.

Sous la plupart des distributions Linux :

2 versions du PHP.ini sont fournies :

  • Une version de dev

  • Une version de prod

Il faut choisir entre les 2 en faisant le bon lien symbolique

Les directives principales PHP.ini :

Ces directives sont très nombreuses. J’ai retenu les plus importantes dans le fichier suivant en commentant leur rôle.

[PHP]

;;;;;;;;;;;;;;;;;;;
; About php.ini   ;
;;;;;;;;;;;;;;;;;;;
; Fichier de configuration principal de PHP
; qui permet de préciser les principales options
; Sous certaines distributions Linux, il en existe 2 versions:
; une de developpement et une autre pour un serveur de production

;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;

; Pour activer PHP
engine = On

; On peut mettre à faux : les tags <? .... ?> ne sont pas reconnus.
short_open_tag = Off

; Allow ASP-style <% %> tags.
; http://php.net/asp-tags
asp_tags = Off

; The number of significant digits displayed in floating point numbers.
; http://php.net/precision
precision = 14

; Compatibilité an 2000
y2k_compliance = On

; Taille des buffers
output_buffering = 4096

; Pour servir ou pas des pages compressées
zlib.output_compression = Off

; Mettre à On pour forcer les flush en phase de debuggage
implicit_flush = Off


; Safe Mode
; http://php.net/safe-mode
; On peut le laisser désactivé car
; a été déclaré OBSOLETE depuis PHP 5.3
Safe_mode = Off


;Pour désactiver certaines fonctions PHP
; indépendant du safe_mode
; http://php.net/disable-functions
disable_functions =

; meme chose avec des classes
disable_classes =

; Colors for Syntax Highlighting mode.
; A utiliser avec la fonction highlight_file() = show_source()
Highlight.string  = #DD0000
highlight.comment = #FF9900
highlight.keyword = #007700
highlight.bg      = #FFFFFF
highlight.default = #0000BB
highlight.html    = #000000

;;;;;;;;;;;;;;;;;
; Miscellaneous ;
;;;;;;;;;;;;;;;;;

; On peut l'enlever sur un serveur de production
; mais n'est pas une menace de sécurité
expose_php = On

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

;Temps d'éxécution max d'un script
;Attention si vous avez du code un peu long à s'éxécuter !
max_execution_time = 30

; Traitement des données reçues
; laisser la valeur par défaut
max_input_time = 60

; Taille mémoire maxi donnée à un script PHP
memory_limit = 128M

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Pour un serveur de Production: E_ALL & ~E_DEPRECATED
; Pour un serveur de développement
error_reporting = E_ALL | E_STRICT

; Affichage des erreurs sur la sortie standard
; cad sur le navigateur
; A désactiver sur un serveur de production
; Utile pour un développeur
display_errors = On

; Affichage des erreurs au démarrage de PHP
; Pour débugger des erreurs sur des plugins
; ou des modules complémentaires de PHP
display_startup_errors = Off

; logger les erreurs
; A activer
log_errors = On

; Set maximum length of log_errors. In error_log information about the source is
; added. The default is 1024 and 0 allows to not apply any maximum length at all.
; http://php.net/log-errors-max-len
log_errors_max_len = 1024

;Ne pas répéter les erreurs identiques
ignore_repeated_errors = On

; ... sauf si elles proviennent de fichiers différents
ignore_repeated_source = Off

; Rapporter les fuites de mémoire
; A activer en phase de dévelopement
report_memleaks = On

; La variable $php_errormsg
; contiendra le texte du dernier message
; d'erreur
; A désactiver sur un serveur de production
track_errors = On

; http://php.net/html-errors
html_errors = On

; A faire pointer sur une copie locale de la documentation
; de PHP
; A désactiver sur un serveur de production
docref_root = "/docs/php/"

; Extension des fichiers de documentation
docref_ext = .html

; Chaine à afficher avant un message d'erreur
; Ici pour qu'il s'affiche en rouge
; Réservé aux serveurs de dévelopement
error_prepend_string = "<font color=#ff0000>"

; Fermeture du tag précédent
error_append_string = "</font>"

; Pour changer le fichier où sont logguées
; les erreurs. Laisser inchangé sauf
; cas particulier
;error_log = syslog

;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;

; The separator used in PHP generated URLs to separate arguments.
; PHP's default setting is "&".
; http://php.net/arg-separator.output
; Example:
;arg_separator.output = "&amp;"

; List of separator(s) used by PHP to parse input URLs into variables.
; PHP's default setting is "&".
; NOTE: Every character in this directive is considered as separator!
; http://php.net/arg-separator.input
; Example:
;arg_separator.input = ";&"

; This directive determines which super global arrays are registered when PHP
; starts up. If the register_globals directive is enabled, it also determines
; what order variables are populated into the global space. G,P,C,E & S are
; abbreviations for the following respective super globals: GET, POST, COOKIE,
; ENV and SERVER. There is a performance penalty paid for the registration of
; these arrays and because ENV is not as commonly used as the others, ENV is
; is not recommended on productions servers. You can still get access to
; the environment variables through getenv() should you need to.
; Default Value: "EGPCS"
; Development Value: "GPCS"
; Production Value: "GPCS";
; http://php.net/variables-order
variables_order = "GPCS"

; laisser la valeur par défaut
request_order = "GP"

; Ca fait longtemps qu'il faut garder cette directive à Off
register_globals = Off

; Determines whether the deprecated long $HTTP_*_VARS type predefined variables
; are registered by PHP or not. As they are deprecated, we obviously don't
; recommend you use them. They are on by default for compatibility reasons but
; they are not recommended on production servers.
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/register-long-arrays
register_long_arrays = Off

; A activer seulement si vous voulez utiliser PHP
; en ligne de commande et lui passer des arguments
register_argc_argv = Off

; Meilleure performance avec :
auto_globals_jit = On

; Taille maximale des données acceptées en POST 
; http://php.net/post-max-size
post_max_size = 8M

; A éviter désormais
magic_quotes_gpc = Off

; idem
magic_quotes_runtime = Off

; mimetype par défaut : text/html
default_mimetype = "text/html"

; Jeu de caractères par  défaut
; laisser à vide ou choisir un jeu de caractères
;default_charset = "iso-8859-1"
default_charset = "utf-8"

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

;
; Autoriser les "uploads" de fichiers
file_uploads = On

; Spécifier le répertoire temporaire por les fichiers
; uploadés :
;upload_tmp_dir = /tmp/upload-dir

; Taille maxi pour les fichies uploadés
upload_max_filesize = 4M

; Nbre de fichiers maxi pouvant être uploadés en une seule requête
max_file_uploads = 20

;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-fopen
allow_url_fopen = On

; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-include
allow_url_include = Off

; Define the anonymous ftp password (your email address). PHP's default setting
; for this is empty.
; http://php.net/from
;from="john@doe.com"

; Define the User-Agent string. PHP's default setting for this is empty.
; http://php.net/user-agent
;user_agent="PHP"

; Timeout pour les flux basés sur des sockets
default_socket_timeout = 60

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

; ; Sous Windows:
;   extension=msql.dll
; ... et sous UNIX:
;
;   extension=msql.so
;
; ... ou avec un chemin:
;
;   extension=/path/to/extension/msql.so
;

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[Date]
; Fuseau horaire utilisé
date.timezone ="Europe/Paris"

[iconv]
; conversion d'un système d'encodage à un autre
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1

[Pdo_mysql]
; En cas d'utilisation du nouveau moteur  mysqlnd
pdo_mysql.cache_size = 2000

; Socket par défaut pour la connexion à MySQL
; La valeur par défaut fonctionne le plus souvent
pdo_mysql.default_socket=/var/mysql/mysql.sock

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; Emplacement pour logger les appels à la fonction mail()
;mail.log =

[MySQL]
; Autorise les connexions persistantes
; N'apporte AUCUNE fonctionnalité supplémentaire
; Mais peut améliorer les performances
mysql.allow_persistent = On

; If mysqlnd is used: Number of cache slots for the internal result set cache
; http://php.net/mysql.cache_size
mysql.cache_size = 2000

; Nbre maxi de liens persistants
mysql.max_persistent = -1

; Nombre maxi de liens permanents :
; -1 veut dire sans limitation
Mysql.max_links = -1

; Port par défaut de MySQL
mysql.default_port = 3306

; Laisser généralement la valeur par défaut
mysql.default_socket =

; Hôte par défaut pour mysql_connect()
mysql.default_host =

; Utilisateur  par défaut pour mysql_connect()
mysql.default_user =

; Passwd  par défaut pour mysql_connect()
; Ce n'est pas une bonne chose de garder
; le passwd ici !! obsolete
mysql.default_password =

; Timeout de connexion à MySQL
mysql.connect_timeout = 60

; Mode de débuggage MySQL
mysql.trace_mode = Off

[MySQLi]
; Nbre maxi de liens persistants
mysqli.max_persistent = -1

; Autorise les connexions persistantes
; N'apporte AUCUNE fonctionnalité supplémentaire
; Mais peut améliorer les performances
mysqli.allow_persistent = On

; Maximum number of links.  -1 means no limit.
; http://php.net/mysqli.max-links
mysqli.max_links = -1

; If mysqlnd is used: Number of cache slots for the internal result set cache
; http://php.net/mysqli.cache_size
mysqli.cache_size = 2000

; Por pour mysqli
mysqli.default_port = 3306

; Socket par défaut pour MySQLi
mysqli.default_socket = /tmp/mysql.sock

; Autorise ou interdit la reconnexion
mysqli.reconnect = Off

[mysqlnd]
; activation des statistiques de mysqlnd
; a des fins de réglages du serveur de BD
mysqlnd.collect_statistics = On

; Même chose avec les opérations sur la mémoire
mysqlnd.collect_memory_statistics = Off

; Size of a pre-allocated buffer used when sending commands to MySQL in bytes.
; http://php.net/mysqlnd.net_cmd_buffer_size
;mysqlnd.net_cmd_buffer_size = 2048

; Size of a pre-allocated buffer used for reading data sent by the server in
; bytes.
; http://php.net/mysqlnd.net_read_buffer_size
;mysqlnd.net_read_buffer_size = 32768

[bcmath]
; Number of decimal digits for all bcmath functions.
; http://php.net/bcmath.scale
bcmath.scale = 0

[Session]
; .../...

; Les sessions doivent-elles utiliser les cookies ?
session.use_cookies = 1

; Envoyer les cookies à travers
; des connexions sécurisées
; le défaut est Off
;Session.cookie_secure =

; PHP maintient un cookie avec l'identifiant de session
; c'est une précaution visant à éviter
; le vol de session
; ce n'est pas une parade absolue
session.use_only_cookies = 1

; Nom de la session
session.name = PHPSESSID

; Démarrage automatique de session
; Désactivé par défaut
session.auto_start = 0

; Durée de vie du cookie
; Si placé à 0, le temps que le navigateur
; soit redémarré
session.cookie_lifetime = 0

; Domaine de validité du cookie
session.cookie_domain =

; Pour interdire à javascript d'accéder à ce cookie
session.cookie_httponly = On

;
; HTTP_REFERER doit contenir cette sous-chaine
; pour être considéré comme valide
Session.referer_check =

; Durée d'expiration du document en minutes
session.cache_expire = 180

; Choix d'une fonction de hachage pour les sessions
; comme :
;   0  (MD5 128 bits)
;   1  (SHA-1 160 bits)
session.hash_function = 0

[Assertion]
; Assertions actives (défaut)
assert.active = On

; Emettre un warning en cas d'assertion non vérifiée
assert.warning = On

; S'arrêter en cas d'assertion non satisfaite
; Désactivé par défaut
;assert.bail = Off

; Fonction utilisateur à appeller en cas d'assertion non satisfaite
;assert.callback = 0