https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.
Cette liste inclut les directives internes du php.ini que vous pouvez définir pour personnaliser votre configuration de PHP. Les directives gérées par les extensions sont listées et détaillées dans les pages de documentation respectives des extensions ; les informations concernant les directives sur les sessions, par exemple, peuvent être trouvées sur la page de documentation des sessions.
Note:
Les valeurs par défaut listées ici seront utilisées lorsque php.ini n'est pas chargé ; les valeurs des fichiers php.ini en environnement de production et en environnement de développement peuvent varier.
Nom | Défaut | Modifiable | Historique |
---|---|---|---|
short_open_tag | "1" | INI_ALL |
|
precision | "14" | INI_ALL |
|
serialize_precision | "-1" | INI_ALL |
Antérieur à PHP 7.1.0, la valeur par défaut était 17. |
disable_functions | "" | INI_SYSTEM uniquement |
|
disable_classes | "" | php.ini only | |
exit_on_timeout | "" | INI_ALL |
|
expose_php | "1" | php.ini uniquement | |
hard_timeout | "2" | INI_SYSTEM |
Disponible à partir de PHP 7.1.0. |
zend.exception_ignore_args | "0" | INI_ALL |
Disponible à partir de PHP 7.4.0 |
zend.multibyte | "0" | INI_ALL |
|
zend.script_encoding | NULL | INI_ALL |
|
zend.detect-unicode | NULL | INI_ALL |
|
zend.signal_check | "0" | INI_SYSTEM |
|
zend.assertions | "1" | INI_ALL avec des restrictions |
|
zend.exception_string_param_max_len | "15" | INI_ALL |
Disponible à partir de PHP 8.0.0. |
Voici un éclaircissement sur l'utilisation des directives de configuration.
short_open_tag
bool
Définit si les balises courtes d'ouverture de PHP
(<? ?>
) sont autorisées ou non.
Si vous voulez utiliser PHP avec XML, vous devez désactiver
cette option de configuration pour pouvoir utiliser
<?xml ?>
. Sinon, vous pouvez l'écrire
à l'aide de PHP, par exemple : <?php echo '<?xml
version="1.0">'; ?>
. Si cette option est désactivée, vous
devez utiliser la version longue d'ouverture de balises PHP
(<?php ?>
).
Note:
Cette directive n'affecte pas l'utilisation de
<?=
, qui est toujours disponible.
precision
int
-1
signifie que le meilleur algorithme pour arrondir
ce nombre sera utilisé.
serialize_precision
int
-1
signifie que le meilleur algorithme pour arrondir
ce nombre sera utilisé.
expose_php
bool
Expose à tous les clients le fait que PHP est installé sur le serveur. Ceci inclut la version de PHP dans les en-têtes HTTP de la réponse (X-Powered-By : PHP/5.3.7).
disable_functions
string
Cette directive vous permet de désactiver certaines fonctions. Elle prend une liste de noms de fonction délimités par une virgule.
Seules les fonctions internes peuvent être désactivées en utilisant cette directive. Les fonctions définies par l'utilisateur ne sont pas affectées.
Cette directive doit être définie dans le php.ini. Par exemple, vous ne pouvez pas la définir dans le fichier httpd.conf.
disable_classes
string
zend.assertions
int
1
, le code d'assertion sera
généré (en mode développement). Lorsque défini à 0
,
le code d'assertion sera généré, mais sera ignoré (il ne sera pas
exécuté) pendant l'exécution. Lorsque défini à -1
,
le code d'assertion ne sera pas généré, rendant ainsi les assertions
totalement neutres (en mode production).
Note:
Si un processus est démarré en mode production, zend.assertions ne peut être changé en cours d'exécution, sachant que le code pour les assertions n'a pas été généré.
Si un processus est démarré en mode développement, zend.assertions ne peut être défini à
-1
en cours d'exécution.
zend.exception_string_param_max_len
int
"0"
et "1000000"
.
hard_timeout
int
Quand le timeout défini dans max_execution_time est atteint, le runtime PHP détruira les ressources gracieusement. Si quelque chose se coince quand ceci se produit, le hard timeout se déclenchera pour le nombre de secondes défini. Quand le hard timeout est atteint, PHP quittera de manière non gracieuse. Quand défini à 0, le hard timeout ne s'activera jamais.
Quand PHP termine d'un hard timeout, ça ressemblera à quelque chose du genre :
Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0
zend.exception_ignore_args
bool
Exclut les arguments dans les stack traces générées depuis les exceptions.
zend.multibyte
bool
Active l'analyse lexicale des fichiers PHP dans des encodages multioctets. L'activation de zend.multibyte est nécessaire pour utiliser certains encodages de caractères comme SJIS, BIG5, etc. qui contiennent des caractères spéciaux en encodage multioctets. Les encodages compatibles avec ISO-8859-1 comme UTF-8, EUC, etc. ne nécessitent pas cette option.
Activer zend.multibyte requiert l'extension mbstring.
zend.script_encoding
string
Cette valeur sera utilisée à moins qu'une directive declare(encoding=...) n'apparaisse en haut du script. Lorsqu'un encodage incompatible ISO-8859-1 est utilisé, les options zend.multibyte et zend.script_encoding doivent être utilisées.
Les chaines de caractères seront converties depuis zend.script_encoding vers mbstring.internal_encoding, comme si mb_convert_encoding() avait été appelé.
zend.detect_unicode
bool
Vérifie le BOM (Byte Order Mark)
et regarde si
le fichier contient des caractères multioctets valides.
Cette détection est effectuée avant le lancement de la fonction
__halt_compiler().
Disponible uniquement en mode Zend multioctets.
zend.signal_check
bool
Vérifie si un gestionnaire de signaux de remplacement est utilisé lors de l'arrêt.
exit_on_timeout
bool
Ceci est une directive Apache1 mod_php uniquement, qui force les fils Apache à sortir si une expiration de délai d'exécution PHP survient. Une telle expiration de délai produit en interne un appel à longjmp() en Apache1 qui peut quitter certaines extensions dans un statut non consistant. En terminant le processus, tous les verrous et la mémoire seront nettoyés.
Nom | Défaut | Modifiable | Historique |
---|---|---|---|
memory_limit | "128M" | INI_ALL |
Voici un éclaircissement sur l'utilisation des directives de configuration.
memory_limit
int
Cette option détermine la mémoire limite, en octets, qu'un script
est autorisé à allouer. Cela permet de prévenir l'utilisation de toute
la mémoire par un script mal codé. Notez que pour n'avoir aucune limite,
vous devez définir cette directive à -1
.
Voir aussi : max_execution_time.
Nom | Défaut | Modifiable | Historique |
---|---|---|---|
realpath_cache_size | "4M" | INI_SYSTEM |
Antérieur à PHP 7.0.16 et 7.1.2, la valeur par défaut était "16K" |
realpath_cache_ttl | "120" | INI_SYSTEM |
Note:
Utiliser open_basedir désactivera le cache realpath.
Voici un éclaircissement sur l'utilisation des directives de configuration.
realpath_cache_size
int
Détermine la taille du cache de realpath qui sera utilisée par PHP. Cette valeur devrait être augmentée sur les systèmes où PHP ouvre plusieurs fichiers, pour refléter la quantité d'opérations exécutées sur les fichiers.
La taille représente le nombre total d'octets dans la chaîne stockée du chemin, plus la taille des données associées avec l'entrée du cache. Cela signifie que pour stocker de grands chemins dans le cache, la taille du cache doit être suffisamment grande. Cette valeur ne contrôle pas directement le nombre de chemins distincts qui peuvent être mis en cache.
La taille nécessaire pour les données de l'entrée du cache est dépendante du système.
realpath_cache_ttl
int
Temps (en seconde) pour lequel persiste l'information du cache de realpath pour un fichier ou un répertoire donné. Pour des systèmes avec des fichiers qui changent peu souvent, pensez à augmenter cette valeur.
Nom | Défaut | Modifiable | Historique |
---|---|---|---|
arg_separator.output | "&" | INI_ALL |
|
arg_separator.input | "&" | INI_PERDIR |
|
variables_order | "EGPCS" | INI_PERDIR |
|
request_order | "" | INI_SYSTEM |INI_PERDIR |
|
auto_globals_jit | "1" | INI_PERDIR |
|
register_argc_argv | "1" | INI_PERDIR |
|
enable_post_data_reading | "1" | INI_PERDIR |
|
post_max_size | "8M" | INI_PERDIR |
|
auto_prepend_file | NULL | INI_PERDIR |
|
auto_append_file | NULL | INI_PERDIR |
|
default_mimetype | "text/html" | INI_ALL |
|
default_charset | "UTF-8" | INI_ALL |
|
input_encoding | "" | INI_ALL |
|
output_encoding | "" | INI_ALL |
|
internal_encoding | "" | INI_ALL |
Voici un éclaircissement sur l'utilisation des directives de configuration.
arg_separator.output
string
Le séparateur utilisé lorsque PHP génère les URL pour séparer les arguments.
arg_separator.input
string
Liste des séparateur(s) utilisé(s) par PHP pour analyser les URL entrantes et en déduire les valeurs.
Note:
Chaque caractère de cette directive est considéré comme étant un séparateur !
variables_order
string
Définit l'ordre d'analyse des variables EGPCS (E
nvironment,
G
et, P
ost,
C
ookie, et S
erver).
Par exemple, si variables_order est défini à
"SP"
alors PHP créera
superglobals $_SERVER et
$_POST, mais ne créera pas
$_ENV, $_GET, et
$_COOKIE. Le fait de définir cet ordre à ""
signifie qu'aucune superglobals ne sera définie.
En SAPIs CGI et FastCGI, $_SERVER
est également peuplé de valeurs de l'environnement ; S
est toujours équivalent à ES
au regard de la position
de E
autre part dans cette directive.
Note:
Le contenu et l'ordre de $_REQUEST sont également affectés par cette directive.
request_order
string
Cette directive décrit l'ordre dans lequel PHP place les variables GET, POST et Cookie dans le tableau _REQUEST. Le placement s'effectue de la gauche vers la droite, les valeurs les plus récentes écrasant les valeurs plus anciennes.
Si cette directive n'est pas définie, variables_order est utilisé pour le contenu de $_REQUEST.
Notez que les fichiers php.ini de la distribution
par défaut ne contiennent pas 'C'
pour les cookies,
ceci pour des raisons de sécurité.
auto_globals_jit
bool
Quand cette directive est activée, les variables SERVER , REQUEST et ENV sont créées lorsqu'elles sont utilisées : seulement si nécessaire. Si ces variables ne sont pas utilisées dans un script, le script verra un gain de performances.
L'utilisation des variables SERVER, REQUEST et ENV est vérifiée lors de la compilation. Ainsi, les utiliser avec, par exemple, des variables dynamiques ne provoquera pas leur initialisation.
register_argc_argv
bool
enable_post_data_reading
bool
post_max_size
int
post_max_size
.
Lorsqu'un entier est utilisé,
sa valeur est mesurée en octets. Vous pouvez également utiliser la notation sténographique
comme décrit dans cette
entrée de la FAQ..
Dans le cas où la taille des données reçues par la méthode POST est plus grande
que post_max_size
, les
superglobales
$_POST et $_FILES
seront vides. Ceci peut être surveillé de différentes façons, e.g. en passant
une variable $_GET au script qui traite les données,
i.e. <form action="edit.php?processed=1">
, et ainsi
vérifier si $_GET['processed'] est défini.
Note:
PHP autorise des mots-clés pour les octets, incluant K (kilo), M (méga) et G (giga). PHP effectue la conversion automatiquement si vous les utilisez. Soyez attentif de ne pas dépasser la limite d'un entier signé sur 32 bits (si vous utilisez les versions 32 bits), auquel cas votre script échouera.
Version | Description |
---|---|
5.3.4 |
post_max_size = 0 ne va pas désactiver la limite
lorsque le type de contenu est application/x-www-form-urlencoded ou
s'il n'est pas enregistré avec PHP.
|
5.3.2 , 5.2.12 |
Permet une taille d'envoi illimitée en définissant
post_max_size à 0.
|
auto_prepend_file
string
Spécifie le nom d'un fichier qui sera automatiquement parcouru avant le fichier principal. Ce fichier est inclus comme s'il l'avait été avec la fonction require, donc include_path est utilisé.
La valeur spéciale none
désactive l'ajout automatique.
auto_append_file
string
Spécifie le nom du fichier qui sera automatiquement parcouru après le fichier principal. Ce fichier est inclus comme s'il l'avait été avec la fonction require, donc include_path est utilisé.
La valeur spéciale none
désactive l'ajout automatique.
Note: Si le script se termine par la fonction exit(), l'ajout automatique ne se fera pas.
default_mimetype
string
Par défaut, PHP va envoyer le type de média en utilisant l'entête Content-Type. Pour désactiver ceci, laissez vide cette valeur.
Le type de média défini par défaut dans PHP est text/html.
default_charset
string
"UTF-8" est la valeur par défaut et celle-ci est
utilisée comme jeu de caractères par défaut pour les fonctions et modules.
PHP enverra toujours un jeu de caractères par défaut pour
htmlentities(),
html_entity_decode() et
htmlspecialchars() si le paramètre
encoding
est omis. La valeur de
default_charset
sera également utilisée
pour définir le jeu de caractères par défaut pour les fonctions
iconv si les options de configuration
iconv.input_encoding
,
iconv.output_encoding
et
iconv.internal_encoding
ne sont pas définies, et pour les fonctions
mbstring si les options de configuration
mbstring.http_input
,
mbstring.http_output
et
mbstring.internal_encoding
ne sont pas définies.
Toutes les versions de PHP vont utiliser cette valeur comme jeu de caractères par défaut dans l'en-tête par défaut Content-Type envoyé par PHP si l'en-tête n'est pas écrasé via un appel à la fonction header().
Définir un default_charset
à une valeur vide
n'est pas recommandé.
input_encoding
string
Ce paramètre est utilisé pour les modules multibytes tels que mbstring et iconv. Vide par défaut.
output_encoding
string
Ce paramètre est utilisé pour les modules multibytes tels que mbstring et iconv. Vide par défaut.
internal_encoding
string
Ce paramètre est utilisé pour les modules multibytes tels que mbstring et iconv. Vide par défaut. Si vide alors, default_charset est utilisé.
Nom | Défaut | Modifiable | Historique |
---|---|---|---|
include_path | ".;/chemin/vers/php/pear" | INI_ALL |
|
open_basedir | NULL | INI_ALL |
|
doc_root | NULL | INI_SYSTEM |
|
user_dir | NULL | INI_SYSTEM |
|
user_ini.cache_ttl | "300" | INI_SYSTEM |
|
user_ini.filename | ".user.ini" | INI_SYSTEM |
|
extension_dir | "/chemin/vers/php" | INI_SYSTEM |
|
extension | NULL | php.ini uniquement | |
zend_extension | NULL | php.ini uniquement | |
cgi.check_shebang_line | "1" | INI_SYSTEM |
|
cgi.discard_path | "0" | INI_SYSTEM |
|
cgi.fix_pathinfo | "1" | INI_SYSTEM |
|
cgi.force_redirect | "1" | INI_SYSTEM |
|
cgi.nph | "0" | INI_SYSTEM |
|
cgi.redirect_status_env | NULL | INI_SYSTEM |
|
cgi.rfc2616_headers | "0" | INI_ALL |
|
fastcgi.impersonate | "0" | INI_SYSTEM |
|
fastcgi.logging | "1" | INI_SYSTEM |
Voici un éclaircissement sur l'utilisation des directives de configuration.
include_path
string
Spécifie une liste de répertoires où les fonctions
require,
include,
fopen(), file(),
readfile() et file_get_contents()
chercheront les fichiers. Le format est identique à la variable d'environnement
système PATH : une liste de répertoires séparés par deux
points (:
) sous Unix ou par un point-virgule
(;
) sous Windows.
PHP considère chaque entrée du chemin d'inclusion séparément lors de la
recherche des fichiers à inclure. Il va vérifier le premier chemin,
et s'il ne trouve pas le fichier, il va vérifier le chemin suivant,
jusqu'à ce qu'il trouve le fichier à inclure ou bien retourner une
alerte de type
E_WARNING
ou de type E_ERROR
.
utilisant la fonction set_include_path().
Exemple #1 include_path sous Unix
include_path=".:/php/includes"
Exemple #2 include_path sous Windows
include_path=".;c:\php\includes"
L'utilisation d'un point (.
) dans le chemin
d'inclusion vous permet de faire des inclusions relatives au
répertoire courant. Cependant, il est plus efficace d'inclure
explicitement un fichier avec include './file'
,
que de demander à PHP de vérifier le dossier courant à chaque inclusion.
Note:
Les variables
ENV
sont aussi disponibles dans les fichiers .ini. Aussi, il est possible de faire référence au dossier home en utilisant la syntaxe${LOGIN}
et${USER}
.Les variables d'environnement peuvent varier suivant les APIs Serveur, tout comme elles peuvent varier suivant les environnements.
Exemple #3 include_path sous Unix en utilisant la variable d'environnement ${USER}
include_path = ".:${USER}/pear/php"
open_basedir
string
Limite les fichiers pouvant être accédés par PHP à une architecture de dossiers spécifique, incluant le fichier lui-même.
Lorsqu'un script tente d'accéder à un fichier avec, par exemple, la fonction include ou la fonction fopen(), le chemin vers le fichier est analysé. Lorsque le fichier se trouve à l'extérieur de l'architecture de dossiers spécifié, PHP refusera d'y accéder. Tous les liens symboliques sont résolus, aussi, il n'est pas possible d'outre-passer cette restriction avec un lien symbolique. Si le fichier n'existe pas, alors le lien symbolique ne pourra être résolu et le nom du fichier est comparé avec l'open_basedir.
L'option open_basedir peut affecter plus que les
fonctions du système de fichiers ; par exemple, si
MySQL
est configuré pour utiliser le driver
mysqlnd
, LOAD DATA INFILE
sera affecté
par l'option open_basedir. Le plupart des extensions
de PHP utilise l'option open_basedir
de cette façon.
La valeur spéciale .
indique que le dossier courant du script sera utilisé comme dossier
de base.Ceci est cependant légèrement dangereux dans le sens où le dossier
courant peut être facilement changé grâce à la fonction
chdir().
Dans le fichier httpd.conf, open_basedir
peut être désactivée (i.e. pour certains hôtes virtuels) de la
même façon
que n'importe quelle directive de configuration avec
"php_admin_value open_basedir none
".
Sous Windows, séparez les dossiers avec un point-virgule. Sous tous les autres systèmes, séparez les dossiers avec des deux-points. Lors de l'utilisation d'Apache en module, les chemins de l'open_basedir depuis les dossiers parents sont maintenant automatiquement hérités.
La restriction spécifiée avec l'open_basedir est un nom de dossier, et non pas un préfixe.
Par défaut, tous les fichiers peuvent être ouverts.
Note: open_basedir peut être affinée au moment de l'exécution. Ceci signifie que si open_basedir est définie à
/www/
dans le fichier php.ini, un script peut affiner la configuration en/www/tmp/
au moment de l'exécution en utilisant la fonction ini_set(). Lors d'un parcours de plusieurs dossiers, vous pouvez utiliser la constantePATH_SEPARATOR
suivant le système d'exploitation. À partir de PHP 8.3.0, open_basedir n'accepte plus les chemins contenant le répertoire parent (..
) lorsqu'il est défini à l'exécution.
Note:
Utiliser open_basedir définira realpath_cache_size à
0
et ainsi désactive le cache realpath.
open_basedir
est juste mesure de protection supplémentaire,
et n'est en aucun cas exhaustive, et ne peut donc pas être dépendu quand
la sécurité est nécessaire.
doc_root
string
Le dossier racine de PHP sur le serveur. Uniquement utilisé si non vide. Si PHP n'a pas été compilé avec FORCE_REDIRECT, vous devez définir le doc_root si vous utilisez PHP en tant que CGI sous n'importe quel serveur web (autre que IIS). Alternativement, vous pouvez utiliser la configuration cgi.force_redirect.
user_ini.cache_ttl
int
user_ini.filename
string
user_dir
string
Le nom de base du répertoire utilisé dans un répertoire utilisateur pour les fichiers PHP, par exemple, public_html.
extension_dir
string
Spécifie le répertoire dans lequel PHP doit chercher des extensions externes à charger. Il est recommandé de spécifier un chemin absolut. Voir aussi enable_dl et dl().
extension
string
Quelles extensions doivent être chargées dynamiquement lors du démarrage de PHP.
zend_extension
string
Nom de l'extension Zend chargeable dynamiquement (par exemple XDebug) à charger lors du démarrage de PHP.
cgi.check_shebang_line
bool
Contrôle si PHP CGI vérifie la ligne commençant par
#!
(shebang) en haut du script exécuté. Cette ligne
est nécessaire si le script est destiné à être exécuté en mode autonome
et via un PHP CGI. PHP en mode CGI
ne lit pas cette ligne et ignore son contenu si cette directive est active.
cgi.discard_path
bool
Si activé, le binaire PHP CGI peut être placé en dehors de l'arbre web en toute sécurité et les personnes ne seront pas capables de contourner la sécurité .htaccess.
cgi.fix_pathinfo
bool
Fournit un réel PATH_INFO
/
PATH_TRANSLATED
pour CGI.
Le comportement précédent de PHP était de définir
PATH_TRANSLATED
en SCRIPT_FILENAME
et de ne pas remplir PATH_INFO
. Pour plus d'informations
sur PATH_INFO
, lisez les spécificités CGI.
Si définie à 1
, PHP CGI fixera ce
chemin suivant les spécifications. Si définie à 0
, PHP
appliquera l'ancien comportement. Par défaut, cette directive est activée. Vous
devriez modifier vos scripts pour utiliser SCRIPT_FILENAME
à la place de PATH_TRANSLATED
.
cgi.force_redirect
bool
cgi.force_redirect est nécessaire pour des raisons de sécurité lors de l'utilisation de PHP en mode CGI sous la plupart des serveurs web. Si vous ne la définissez pas, PHP l'activera automatiquement par défaut. Vous pouvez la désactiver à vos risques et périls.
Note:
Utilisateurs de Windows : Lors de l'utilisation de IIS, cette option doit est désactivée ; pareil pour OmniHTTPD et Xitami.
cgi.nph
bool
Si cgi.nph est activé, il forcera CGI à toujours envoyer le Status: 200 avec chaque requête.
cgi.redirect_status_env
string
Si cgi.force_redirect est activé et que vous ne tournez pas sous un serveur web Apache ou Netscape (iPlanet), vous devriez avoir besoin de définir un nom de variable d'environnement que PHP utilisera pour voir si tout est correct pour continuer l'exécution.
Note:
La définition de cette variable peut avoir des conséquences sur la sécurité. Sachez ce que vous faites avant de faire cela.
cgi.rfc2616_headers
int
Dit à PHP quel type d'en-tête doit être utilisé lors de l'envoi du code réponse HTTP. Si définie à 0, PHP enverra un en-tête "Status:" (» RFC 3875) qui est supporté par Apache et les autres serveurs web. Lorsque définie à -1, PHP enverra un en-tête répondant à la spécification de la » RFC 2616.
Si cette option est activée, et que vous exécutez PHP en environnement CGI (e.g. PHP-FPM), vous ne devriez pas utiliser les en-têtes de réponse HTTP "status" RFC 2616, mais plutôt utiliser l'équivalent RFC 3875, i.e. au lieu de l'en-tête ("HTTP/1.0 404 Not found"), utilisez ("Status: 404 Not Found").
Laissez ce paramètre à 0 à moins que vous sachiez parfaitement ce que vous faîtes.
fastcgi.impersonate
string
FastCGI sous IIS (sur les systèmes d'exploitation basés sur WINNT) supporte la possibilité de déterminer la marque de sécurité du client appelant. Cela permet à IIS de définir le contexte de sécurité sur lequel la requête est exécutée. mod_fastcgi sous Apache ne supporte actuellement pas cette fonctionnalité (03/17/2002). Définie à 1 si vous utilisez IIS. Par défaut, vaut 0.
fastcgi.logging
bool
Active la journalisation SAPI avec FastCGI. Activé par défaut.
Nom | Défaut | Modifiable | Historique |
---|---|---|---|
file_uploads | "1" | INI_SYSTEM |
|
upload_tmp_dir | NULL | INI_SYSTEM |
|
max_input_nesting_level | 64 | INI_PERDIR |
|
max_input_vars | 1000 | INI_PERDIR |
|
upload_max_filesize | "2M" | INI_PERDIR |
|
max_file_uploads | 20 | INI_PERDIR |
Voici un éclaircissement sur l'utilisation des directives de configuration.
file_uploads
bool
Autorise ou non le chargement de fichiers par HTTP. Voir aussi les directives upload_max_filesize, upload_tmp_dir et post_max_size.
upload_tmp_dir
string
Le répertoire temporaire utilisé pour stocker les fichiers lors du chargement. L'utilisateur sous lequel fonctionne PHP doit avoir les droits en écriture sur ce répertoire. Si non spécifié, PHP utilisera celui par défaut du système.
Si le dossier renseigné ici n'est pas accessible en écriture, PHP se rabat alors sur le dossier temporaire par défaut du système. Si open_basedir est activé, alors le dossier temporaire par défaut du système doit être autorisé pour que le chargement des fichiers puisse fonctionner.
upload_max_filesize
int
La taille maximale en octets d'un fichier téléversé.
post_max_size doit être plus large que cette valeur.
Lorsqu'un entier est utilisé, sa valeur est mesurée en octets. Vous pouvez également utiliser la notation sténographique comme décrit dans cette entrée de la FAQ..max_file_uploads
int
Le nombre maximum de fichiers pouvant être envoyés simultanément. Les champs de téléchargement laissés vides lors de la soumission ne comptent plus dans le calcul de cette limite.
Nom | Défaut | Modifiable | Historique |
---|---|---|---|
sql.safe_mode | "0" | INI_SYSTEM |
Supprimé à partir de PHP 7.2.0 |
Voici un éclaircissement sur l'utilisation des directives de configuration.
sql.safe_mode
bool
Si activé, les fonctions de connexion à la base de données qui spécifient des valeurs par défaut utiliseront ces valeurs au lieu des arguments fournis. Pour les valeurs par défaut, reportez-vous à la documentation des fonctions de connexion pour la base de données concernée.
Cette fonctionnalité a été SUPPRIMÉE à partir de PHP 7.2.0.
Nom | Défaut | Modifiable | Historique |
---|---|---|---|
windows.show_crt_warning | "0" | INI_ALL |
Voici un éclaircissement sur l'utilisation des directives de configuration.
windows.show_crt_warning
bool
This directive shows the Windows CRT warnings when enabled.
https://haydenjames.io/understanding-php-memory_limit/ explains the memory_limit setting nicely.
Be careful while using auto_prepend_file.
When the custom exception handler, set by set_exception_handler(), handles an uncaught exception, it interrupts the execution of every script.
If the script with the unhandled exception has been automatically prepended or included by an automatically prepended script, however, the main script will continue running anyway.
This could cause several issues: when we think that throwing an exception would automatically interrupt the current application, a whole chunk of code is going to run anyway.
Note regarding the upload_tmp_dir setting and UNC Paths:
When using PHP on Windows OS and IIS FastCGI, if you need to use a UNC path to a folder on a network drive for the upload_tmp_dir setting then you must use three \ characters at the front of the UNC path.
Windows and PHP use the first slash as an escape character, so if you only use two slashes then it passes a UNC path with just one backslash. That is not valid for UNC paths and you many experience problems when uploading files, such as errors saying that "PHP is missing a temporary folder".
Correct:
upload_tmp_dir = "\\\path\to\your\folder"
Incorrect:
upload_tmp_dir = "\\path\to\your\folder"
This might help in case someone happens to maintain old applications with a charset other than utf-8.
According to the docs, you can override the default charset if you use `header()`.
Suppose php.ini sets the default_charset to "UTF-8", but you need a legacy charset, like ISO-8859-1.
Still,
<?php header('Content-Type: text/html; Charset=ISO-8859-1'); ?>
would not override the charset, just add it as well and the result
was a response header like (note the two charsets):
Content-Type:"text/html; Charset=ISO-8859-1;charset=UTF-8"
I found it strange the default one as `charset` with a lowercase `c`
as opposed to my custom charset with an uppercase `C`.
What solved was to _override_ the charset using all lowercase letters
as well for the word “charset”:
<?php header('content-type: text/html; charset=ISO-8859-1'); ?>
Then, the double charset from the response headers disappeared, and only the single, custom charset remained.
you get a misleading error if a directory doesn't exist or the user lacks permission to access it.
open_basedir restriction in effect. File(/tmp/php_session) is not within the allowed path(s): /tmp/php_session
"If the size of post data is greater than post_max_size..."
It seems that a more elegant way is comparison between post_max_size and $_SERVER['CONTENT_LENGTH']. Please note that the latter includes not only size of uploaded file plus post data but also multipart sequences. Leo
If you use Microsoft IIS Windows and want to use open_basedir restrictions with multiple dirs you have to set them into single quotes in the main config xml file of IIS (C:\Windows\System32\inetsrv\config\applicationHost.config). Works fine in IIS 10.
Multiple files with single quotes and ; for windows:
"C:\php\php-cgi.exe|-d open_basedir='C:\Windows\Temp\;D:\mywebsite1\'"
Only one dir works fine without single quotes:
"C:\php\php-cgi.exe|-d open_basedir=D:\mywebsite1\"
In my main config xml file of IIS there are 2 nodes to set per website and the definitions have to be equal:
configuration\Location\system.webServer\handlers\add
configuration\system.webServer\fastCgi
I had a problem with 'open_basedir =' string in php.ini. This string was writtren in VirtualHost Directory directive of Apache2 and successfully rewrote the same php.ini setting! It happened with VestaCP, but I think, it's a common way. Goog luck!
It appears that if you use both the 'include_path' directives and 'open_basedir', that file searches will hit the include path *first*, before local files. But if 'open_basedir' is not in use, then local files are found first. For example, suppose you have code in '/var/www/myfile.php' which does:
<?php
require_once('config.php');
?>
Further, assume that there is a local file '/var/www/config.php', and there is also a file '/var/local/php/config.php'.
Next, if your php.ini has:
include_path = /var/local/php/
Normally, this would look for '/var/www/config.php' first, and if not found, then it would try '/var/local/php/config.php'.
But if you also have this in php.ini:
open_basedir = /var/www/:/var/local/php/
Then the require would reverse the order of the search, and load '/var/local/php/config.php', even when the local 'config.php' file exists.
Furthermore, if include_path contains directories not in open_basedir, you can end up with a fatal error. For example, change the directive to:
open_basedir = /var/www/:/var/local/includes/php/
Now the require will first find '/var/local/php/config.php' from the include_path, try to include it, but be unable to because of the open_basedir restrictions.