While the manual says that the file specified by auto_prepend_file is included as if it were called by include(), in fact the file is included as if it were called by require().
In other words, if PHP cannot find the file that you specify with auto_prepend_file, it will throw a fatal error.
Description des directives internes du php.ini
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.
Options Httpd
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| async_send | "0" | PHP_INI_ALL |
Options du langage
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| short_open_tag | On | PHP_INI_ALL | PHP_INI_ALL pour PHP 4.0.0. PHP_INI_PERDIR en PHP >= 4.0.1. |
| asp_tags | "0" | PHP_INI_PERDIR | PHP_INI_ALL pour PHP 4.0.0. |
| precision | "14" | PHP_INI_ALL | |
| serialize_precision | "17" | PHP_INI_ALL | Disponible depuis PHP 4.3.2. Jusqu'en PHP 5.3.5, la valeur par défaut était 100. |
| y2k_compliance | "1" | PHP_INI_ALL | Supprimé en PHP 5.4.0. |
| allow_call_time_pass_reference | "1" | PHP_INI_PERDIR | PHP_INI_ALL pour PHP 4.0.0. Supprimé depuis PHP 5.4.0 |
| disable_functions | "" | php.ini only | Disponible depuis PHP 4.0.1. |
| disable_classes | "" | php.ini only | Disponible depuis PHP 4.3.2. |
| exit_on_timeout | "" | PHP_INI_ALL | Disponible depuis PHP 5.3.0. |
| expose_php | "1" | php.ini uniquement | |
| zend.multibyte | "0" | PHP_INI_ALL | Disponible depuis PHP 5.4.0 |
| zend.script_encoding | NULL | PHP_INI_ALL | Disponible depuis PHP 5.4.0 |
| zend.signal_check | "0" | PHP_INI_SYSTEM | Disponible depuis PHP PHP 5.4.0 |
| zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | Disponible depuis PHP 5.0.0. Supprimé en PHP 5.3.0. |
| detect_unicode | "1" | PHP_INI_ALL | Disponible depuis PHP 5.1.0. Cette fonctionnalité obsolète sera certainement supprimée dans le futur. |
Voici un éclaircissement sur l'utilisation des directives de configuration.
-
short_open_tagboolean -
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 affecte également l'utilisation de
<?=, qui est identique à<? echo, avant PHP 5.4.0. L'utilisation de cette écriture nécessite que l'optionshort_open_tagsoit activée. Depuis PHP 5.4.0,<?=est toujours disponible. - Active l'utilisation des balises ASP (<% %>) tout en conservant les balises PHP (<?php ?>). Cela inclut l'utilisation des balises courtes comme <%= $valeur %>. Pour plus d'informations, lisez la page Sortir du mode HTML.
-
precisioninteger - Le nombre de décimales significatif à afficher dans les nombres à virgule flottante.
-
serialize_precisioninteger - Le nombre de chiffres significatifs conservés lors de la linéarisation des nombres à virgule flottante.
-
y2k_complianceboolean - Force la conformité avec l'an 2000 (peut être la cause de problèmes avec les navigateurs non-conformes)
-
allow_call_time_pass_referenceboolean -
Active ou non la possibilité de forcer les arguments à être passés par référence lors de l'appel à une fonction. Il est préférable de spécifier directement dans la déclaration de la fonction si les arguments seront passés ou non par référence. Nous vous encourageons à désactiver cette option et de vous assurer que vos scripts fonctionnent correctement avec, afin d'être sûr qu'ils fonctionneront avec les versions futures du langage (vous devriez recevoir une alerte à chaque fois que vous utiliserez cette fonctionnalité).
Passer les arguments par référence à l'appel de la fonction a été abandonné pour rendre le code plus clair. Les fonctions risquaient de modifier les arguments d'une manière aléatoire si l'argument était passé par référence. Pour éviter cet effet, il est préférable de spécifier le passage par référence dans le prototype de la fonction.
Voir aussi l'explication sur les références.
Changelog pour allow_call_time_pass_reference Version Description 5.4.0 Supprimé de PHP. 5.3.0 Génère une erreur E_DEPRECATED.5.0.0 Déprécié, génère une erreur E_COMPILE_WARNING. -
expose_phpboolean -
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). Avant PHP 5.5.0, les logos sont aussi activés, donc ajouter leur chaine aux urls de votre script PHP affichera le logo approprié (» http://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42). Ceci affecte aussi la sortie de phpinfo(). Lorsque les logos sont désactivés, le logo PHP et les crédits ne s'afficheront pas.
Note:
Depuis PHP 5.5.0, ces GUIDs et la fonction php_logo_guid() ont été supprimés de PHP, et les GUIDs ont été remplacés avec les données URIs. Le fait de tenter d'accéder au logo de PHP en ajoutant le GUID à l'URL ne fonctionne plus. De la même façon, le fait de désactiver le paramètre
expose_phpn'aura aucun effet sur l'affichage ou non du logo PHP dans la fonction phpinfo().Voir aussi php_logo_guid() et phpcredits().
-
disable_functionsstring -
Cette directive vous permet de désactiver certaines fonctions pour des raisons de securité. Elle prend une liste de noms de fonction délimités par une virgule. Cette directive n'est pas affectée par le Safe Mode.
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 le définir dans le fichier httpd.conf.
-
disable_classesstring -
Cette directive vous permet de désactiver certaines classes pour des
raisons de securité.
Elle prend une liste de noms de classes délimités par une virgule.
Cette directive n'est pas affectée par le
Safe Mode.
Cette directive doit être définie dans le php.ini.
Par exemple, vous ne pouvez pas le définir dans le fichier httpd.conf.
Note: Note de disponibilité
Cette directive est devenue disponible depuis PHP 4.3.2. -
zend.ze1_compatibility_modeboolean -
Active le mode de compatibilité avec le Zend Engine 1 (PHP 4). Cela affecte le clonage, le casting (les objets sans propriété sont transtypés en
FALSEou 0) et la comparaison des objets. Dans ce mode, les objets sont passés par valeur plutôt que par référence, par défaut.Voir aussi la section intitulée Migration de PHP 4 à PHP 5.
AvertissementCette fonctionnalité est devenue OBSOLÈTE et a été SUPPRIMÉE depuis PHP 5.3.0.
-
zend.multibyteboolean -
Active l'analyse lexicale des fichiers PHP dans des encodages multi-octets.
-
zend.script_encodingstring -
Cette valeur sera utilisée à moins qu'une directive declare(encoding=...) n'apparaisse en haut du script.
-
zend.signal_checkboolean -
Vérifie si un gestionnaire de signaux de remplacement est utilisé lors de l'arrêt.
-
detect_unicodeboolean -
Vérifie le BOM (Byte Order Mark) et regarde si le fichier contient des caractères multi-octets valides. Cette détection est effectuée avant le lancement de la fonction __halt_compiler(). Disponible uniquement en mode Zend multi-octets.
-
exit_on_timeoutboolean -
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 consistent. En terminant le processus, tous les verrous et la mémoire seront nettoyés.
Limite des ressources
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| memory_limit | "128M" | PHP_INI_ALL | "8M" avant PHP 5.2.0, "16M" depuis PHP 5.2.0 |
Voici un éclaircissement sur l'utilisation des directives de configuration.
-
memory_limitinteger -
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.
Avant la version 5.2.1 de PHP, pour pouvoir utiliser cette directive, vous deviez l'activer au moment de la compilation en utilisant l'option --enable-memory-limit dans la ligne de configuration. Cette option de compilation était aussi requise afin de définir les fonctions memory_get_usage() et memory_get_peak_usage() avant la version 5.2.1
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..
Voir aussi : max_execution_time.
Réglage de Performance
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| realpath_cache_size | "16K" | PHP_INI_SYSTEM | Disponible depuis PHP 5.1.0. |
| realpath_cache_ttl | "120" | PHP_INI_SYSTEM | Disponible depuis PHP 5.1.0. |
Voici un éclaircissement sur l'utilisation des directives de configuration.
-
realpath_cache_sizeentier -
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.
-
realpath_cache_ttlentier -
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.
Gestion des données
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| track_vars | "On" | PHP_INI_?? | |
| arg_separator.output | "&" | PHP_INI_ALL | Disponible depuis PHP 4.0.5. |
| arg_separator.input | "&" | PHP_INI_PERDIR | Disponible depuis PHP 4.0.5. |
| variables_order | "EGPCS" | PHP_INI_PERDIR | PHP_INI_ALL pour PHP <= 5.0.5. |
| request_order | "" | PHP_INI_SYSTEM|PHP_INI_PERDIR | Disponible depuis PHP 5.3.0 |
| auto_globals_jit | "1" | PHP_INI_PERDIR | Disponible depuis PHP 5.0.0. |
| register_globals | "0" | PHP_INI_PERDIR | PHP_INI_ALL pour PHP <= 4.2.3. Supprimé en PHP 5.4.0. |
| register_argc_argv | "1" | PHP_INI_PERDIR | PHP_INI_ALL pour PHP <= 4.2.3. |
| register_long_arrays | "1" | PHP_INI_PERDIR | Disponible depuis PHP 5.0.0. Obsolète en PHP 5.3.0. Retiré depuis PHP 5.4.0 |
| enable_post_data_reading | "1" | PHP_INI_PERDIR | Disponible depuis PHP 5.4.0 |
| post_max_size | "8M" | PHP_INI_PERDIR | PHP_INI_SYSTEM pour PHP <= 4.2.3. Disponible depuis PHP 4.0.3. |
| gpc_order | "GPC" | PHP_INI_ALL | Supprimé en PHP 5.0.0. |
| auto_prepend_file | NULL | PHP_INI_PERDIR | PHP_INI_ALL pour PHP <= 4.2.3. |
| auto_append_file | NULL | PHP_INI_PERDIR | PHP_INI_ALL pour PHP <= 4.2.3. |
| default_mimetype | "text/html" | PHP_INI_ALL | |
| default_charset | "" | PHP_INI_ALL | |
| always_populate_raw_post_data | "0" | PHP_INI_PERDIR | PHP_INI_ALL pour PHP <= 4.2.3. Disponible depuis PHP 4.1.0. |
Voici un éclaircissement sur l'utilisation des directives de configuration.
-
track_varsboolean -
Si cette option est configurée, alors les variables d'environnement GET, POST, Cookie et Server peuvent être trouvées respectivement dans les tableaux associatifs globaux $_ENV, $_GET, $_POST, $_COOKIE et $_SERVER.
Notez que depuis PHP 4.0.3,
track_varsest toujours activée. -
arg_separator.outputstring -
Le séparateur utilisé lorsque PHP génère les URL pour séparer les arguments.
-
arg_separator.inputstring -
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_orderstring -
Définit l'ordre d'analyse des variables EGPCS (Environment, Get, Post, Cookie, et Server). Par exemple, si variables_order est défini à "SP" alors PHP créera superglobals $_SERVER et $_POST, maisne créera pas $_ENV, $_GET, et $_COOKIE. Le fait de définir cet ordre à "" signifie qu'aucune superglobals ne sera définie.
Si la directive obsolète register_globals est activée, alors variables_order configurera également l'ordre pour les variables ENV, GET, POST, COOKIE et SERVER qui seront peuplées dans le contexte global. Ainsi, par exemple, si variables_order est défini à "EGPCS", si register_globals est actif, et que $_GET['action'] et $_POST['action'] sont définies, alors $action contiendra la valeur de $_POST['action'] vu que P vient après G dans la valeur de la directive pour cet exemple.
AvertissementEn SAPIs CGI et FastCGI, $_SERVER est également peuplé de valeur 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_orderstring -
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_jitboolean -
Quand cette directive est activée, les variables SERVER 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.
Les directives PHP register_globals, register_long_arrays, et register_argc_argv doivent être désactivées pour que cete directive soit utilisable. Depuis PHP 5.1.3, il n'est plus nécessaire de désactiver register_argc_argv.
AvertissementL'utilisation des variables SERVER 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_globalsboolean -
Définit si oui ou non les variables EGPCS (Environment, GET, POST, Cookie, Server) seront enregistrées comme des variables globales.
Depuis » PHP 4.2.0, la valeur par défaut de cette directive est off.
Lisez le chapitre sur la sécurité concernant l'utilisation de register_globals pour plus d'informations.
Notez que
register_globalsne peut pas être défini durant le traitement ( ini_set()). Vous pouvez utiliser .htaccess si votre hôte vous le permet comme décrit ci-dessous. Exemple d'une entrée .htaccess :php_flag register_globals off.Note:
La directive
register_globalsest affectée par la directive variables_order .AvertissementCette fonctionnalité est devenue OBSOLETE depuis PHP 5.3.0 et a été SUPPRIMEE depuis PHP 5.4.0.
-
register_argc_argvboolean - Dit à PHP s'il doit déclarer ou non les variables argv et argc (qui contiendront les informations GET). Voir aussi les lignes de commande.
-
register_long_arraysboolean -
Dit à PHP si oui ou non il doit enregistrer les types obsolètes
$HTTP_*_VARS comme
variables
pré-définies.
Lorsque cette directive est activée (par défaut), les variables longues PHP
comme $HTTP_GET_VARS seront définies.
Si vous ne les utilisez pas, il est recommandé de désactiver cette option
pour des raisons de performance. À la place, utilisez les variables tableaux
super-globales comme $_GET.
Cette directive est Disponible depuis PHP 5.0.0.
Avertissement
Cette fonctionnalité est devenue OBSOLETE depuis PHP 5.3.0 et a été SUPPRIMEE depuis PHP 5.4.0.
-
enable_post_data_readingboolean - Le fait de désactiver cette option fera que les variables $_POST et $_FILES ne seront pas peuplées. La seule façon de lire les données transmises sera alors d'utiliser le gestionnaire de flux php://input. Ceci peut être intéressant pour les requêtes via un proxy ou pour analyser les données transmises directement en mémoire.
-
post_max_sizeinteger -
Définit la taille maximale des données reçues par la méthode POST.
Cette option affecte également les fichiers chargés.
Pour charger de gros fichiers, cette valeur doit être plus grande
que la valeur de upload_max_filesize.
Si la limitation de mémoire est activée par votre script de configuration,
memory_limit affectera
également les fichiers chargés. De façon générale,
memory_limit doit être plus grand
que
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 quepost_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 bits, 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.
-
gpc_orderstring -
Définit l'ordre de parcours des variables GET/POST/COOKIE. Par défaut, cette directive vaut "GPC". Si vous positionnez cette directive à "GP" par exemple, PHP ignorera complètement les cookies et effacera toutes les variables de la méthode GET avec les variables de la méthode POST portant le même nom.
Note:
Cette option a été supprimée en PHP 5.0.0. Utilisez variables_order à la place.
-
auto_prepend_filestring -
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_filestring -
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_mimetypestring -
-
default_charsetstring -
PHP enverra toujours un jeux de caractères par défaut à l'en-tête HTTP Content-type: header. Pour désactiver l'envoi du jeu de caractères, définissez le tout simplement à une valeur vide.
-
always_populate_raw_post_databoolean -
Remplit toujours la variable $HTTP_RAW_POST_DATA. Sinon, la variable est remplie uniquement des types MIME non reconnus des données. Cependant, la méthode préférée pour l'accès à ce type de données est php://input. $HTTP_RAW_POST_DATA n'est pas disponible avec enctype="multipart/form-data".
Voir aussi : magic_quotes_gpc, magic_quotes_runtime et magic_quotes_sybase.
Chemins et répertoires
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| include_path | ".;/chemin/vers/php/pear" | PHP_INI_ALL | |
| open_basedir | NULL | PHP_INI_ALL | PHP_INI_SYSTEM en PHP < 5.3.0 |
| doc_root | NULL | PHP_INI_SYSTEM | |
| user_dir | NULL | PHP_INI_SYSTEM | |
| extension_dir | "/chemin/vers/php" | PHP_INI_SYSTEM | |
| extension | NULL | php.ini uniquement | |
| zend_extension | NULL | php.ini uniquement | |
| zend_extension_debug | NULL | php.ini uniquement | Disponible avant PHP 5.3.0 |
| zend_extension_debug_ts | NULL | php.ini uniquement | Disponible avant PHP 5.3.0 |
| zend_extension_ts | NULL | php.ini uniquement | Disponible avant PHP 5.3.0 |
| cgi.check_shebang_line | "1" | PHP_INI_SYSTEM | Disponible depuis PHP 5.2.0. |
| cgi.fix_pathinfo | "1" | PHP_INI_SYSTEM | Disponible depuis PHP 4.3.0. PHP_INI_ALL dans les versions inférieures à PHP 5.2.1. |
| cgi.force_redirect | "1" | PHP_INI_SYSTEM | Disponible depuis PHP 4.2.0. PHP_INI_ALL dans les versions inférieures à PHP 5.2.1. |
| cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | Disponible depuis PHP 4.2.0. PHP_INI_ALL dans les versions inférieures à PHP 5.2.1. |
| cgi.rfc2616_headers | "0" | PHP_INI_ALL | Disponible depuis PHP PHP 4.3.0. |
| fastcgi.impersonate | "0" | PHP_INI_SYSTEM | Disponible depuis PHP 4.3.0. PHP_INI_ALL dans les versions inférieures à PHP 5.2.1. |
| fastcgi.logging | "1" | PHP_INI_SYSTEM | Disponible depuis PHP 4.3.0. PHP_INI_ALL dans les versions inférieures à PHP 5.2.1. |
Voici un éclaircissement sur l'utilisation des directives de configuration.
-
include_pathstring -
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 warning ou de type error. Vous pouvez spécifier votre chemin d'inclusion au moment de l'exécution en 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_basedirstring -
Limite les fichiers pouvant être ouverts par PHP à une architecture de dossiers spécifique, incluant le fichier lui-même. Cette directive n'est PAS affectée par le Safe Mode.
Lorsqu'un script tente d'ouverir un fichier avec, par exemple, la fonction fopen() ou la fonction gzopen(), le chemin vers le fichier est analysé. Lorsque le fichier se trouve à l'extérieur de l'architecture de dossiers spécifié, PHP refusera de l'ouvrir. Tous les liens symboliques sont résolus, aussi, il n'est pas possible d'outre-passer cette restriction avec un lien symboliqsue. 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 .
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 changer 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é avec l'open_basedir est un nom de dossier depuis PHP 5.2.16 et PHP 5.3.4. Les précédantes versions l'utilisait comme un préfixe. Ceci signifie que "open_basedir = /dir/incl" permet également d'accéder à "/dir/include" et "/dir/incls" s'ils existent. Lorsque vous souhaitez restreindre l'accès à un dossier spécifique, terminez le chemin par un slash. Par exemple : open_basedir = /dir/incl/
Par défaut, tous les fichiers peuvent être ouverts.
Note:
Depuis PHP 5.3.0, open_basedir peut être affinée au moment de la compilation. Ceci signifie que si open_basedir est définie à /www/ dans le fichier php.ini, un script peut affiné la configuration en /www/tmp/ au moment de la compilation en utilisant la fonction ini_set(). Lors d'un parcours de plusieurs dossiers, vous pouvez utiliser la constante
PATH_SEPARATORsuivant le système d'exploitation. -
doc_rootstring -
Le dossier racine de PHP sur le serveur. Uniquement utilisé si non vide. Si PHP est configuré avec le safe mode, aucun fichier n'est servi en dehors de ce répertoire. 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_dirstring -
Le nom de base du répertoire utilisé dans un répertoire utilisateur pour les fichiers PHP, par exemple, public_html.
-
extension_dirstring -
Spécifie le répertoire dans lequel PHP doit chercher des extensions externes à charger. Voir aussi enable_dl et dl().
-
extensionchaîne de caractères -
Quelles extensions doivent être chargées dynamiquement lors du démarrage de PHP.
-
zend_extensionstring -
Chemin absolu des extensions Zend chargeable dynamiquement (par exemple APD) à charger lors du démarrage de PHP.
-
zend_extension_debugstring -
Variante de zend_extension pour les extensions compilées avec les informations de débogage avant PHP 5.3.0.
-
zend_extension_debug_tsstring -
Variante de zend_extension pour les extensions compilées avec les informations de débogage et la sécurité des threads avant PHP 5.3.0.
-
zend_extension_tsstring -
Variante de zend_extension pour les extensions compilés avec la sécurité des threads avant PHP 5.3.0.
-
cgi.check_shebang_linebooléen -
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.fix_pathinfobooléen -
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_redirectboolean -
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.redirect_status_envstring -
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_headersint -
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 savez parfaitement ce que vous faîtes.
-
fastcgi.impersonatestring -
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é. 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.loggingboolean -
Active la journalisation SAPI avec FastCGI. Activé par défaut.
Chargement de fichiers
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| file_uploads | "1" | PHP_INI_SYSTEM | PHP_INI_ALL pour PHP <= 4.2.3. Disponible depuis PHP 4.0.3. |
| upload_tmp_dir | NULL | PHP_INI_SYSTEM | |
| max_input_nesting_level | 64 | PHP_INI_PERDIR | Disponible depuis PHP 5.3.9. |
| max_input_vars | 1000 | PHP_INI_PERDIR | Disponible depuis PHP 5.3.9. |
| upload_max_filesize | "2M" | PHP_INI_PERDIR | PHP_INI_ALL pour PHP <= 4.2.3. |
| max_file_uploads | 20 | PHP_INI_SYSTEM | Disponible depuis PHP 5.2.12. |
Voici un éclaircissement sur l'utilisation des directives de configuration.
-
file_uploadsboolean ou integer -
Autorise ou non le chargement de fichiers par HTTP. Voir aussi les directives upload_max_filesize, upload_tmp_dir et 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.. -
upload_tmp_dirstring -
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_filesizeinteger -
La taille maximale en octets d'un fichier à charger.
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_uploadsentier -
Le nombre maximum de fichiers pouvant être envoyés simultanément. Depuis PHP 5.3.4, les champs de téléchargement laissés vides lors de la soumission ne comptent plus dans le calcul de cette limite.
SQL général
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| sql.safe_mode | "0" | PHP_INI_SYSTEM |
Voici un éclaircissement sur l'utilisation des directives de configuration.
-
sql.safe_modeboolean -
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.
Spécifique à Windows
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| windows_show_crt_warning | "0" | PHP_INI_ALL | Disponible depuis PHP 5.4.0. |
Voici un éclaircissement sur l'utilisation des directives de configuration.
-
windows_show_crt_warningboolean -
This directive shows the Windows CRT warnings when enabled. These warnings were displayed by default until PHP 5.4.0.
default_charset doesn't always set the charset for all content types, it appears to only do so for some known ones such as text/html.
If your using other content type's ensure you set the charset manually.
Tested on php 5.3.10 with application/json
Amusingly, the include_path logically includes the current directory of the running file as the last entry all the time anyways, so part of the business about shoving "." into the include_path is spurious -- it's "there" on the end all the time, at least in the 5.2.12 source (see main/fopen_wrappers.c around line 503).
This one had me goin' for a while.
register_long_arrays has a very odd behavior (at least in PHP 5.2):
With register_long_arrays=Off the $GLOBALS array will not contain [_SERVER] and [_REQUEST]. They are accessible as superglobals ($_SERVER, $_REQUEST), but they disappear from the $GLOBALS array!
If you need to use a path in your include_path that has a space in it - I found that I could make it work (in windows anyway) by setting a path like this
L:\Information Technology\Resources\lib\
in the include path like this listed below
include_path = ".;L:\Information" " Technology\Resources\lib\"
Note that there is no way to disable eval() work by using disable_functions directive, because eval() is a language construct and not a function.
Many people advise to disable such potentially-insecure functions like system(), exec(), passthru(), eval() and so on in php.ini when not running in safe mode, but eval() would still work even it listed in disable_functions.
For 'short_open_tag',
though it is marked as PHP_INI_ALL in changable column,
you should note the CHANGE_LOG column also:
PHP_INI_ALL in PHP <= 4.0.0.
PHP_INI_PERDIR in PHP < 5.3.0
So as of 4.0, it will not work if you wanna use
ini_set('short_open_tag') to change it's value on the fly.
"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
Starting with PHP 4.4.0 (at least PHP version 4.3.10 did have old, documented behaviour) interpretation of value of "session.save_path" did change in conjunction with "save_mode" and "open_basedir" enabled.
Documented ( http://de.php.net/manual/en/ref.session.php#ini.session.save-path ):
Values of "session.save_path" should or may be **without** ending slash.
For instance:
<?php
// Valid only *before* PHP 4.4.0:
ini_set( "session.save_path", "/var/httpd/kunde/phptmp" );
?> will mean:
The directory "/var/httpd/kunde/phptmp/" will be used to write data and therefore must be writable by the web server.
Starting with PHP 4.4.0 the server complains that "/var/httpd/kunde/" is not writable.
Solution: Add an ending slash in call of ini_set (or probably whereever you set "session.save_path"), e.g.:
<?php
// Note the slash on ".....phptmp/":
ini_set( "session.save_path", "/var/httpd/kunde/phptmp/" );
?>
Hope, that does help someone.
Warning, if you change upload_max_filesize, please note that both post_max_size and memory_limit directives may have to change too.
Note that on some Unix systems (i.e. PHP 5.1.6 on Centos 5.2) include_path in php.ini should NOT be quoted.
For example, instead of
include_path='.:/usr/share/php'
use
include_path=.:/usr/share/php
Using quotes does not cause any error message, but all of your require_once() directives will fail (indicating that file could not be opened) - unless full path to target file is provided.
When display_errors is off, PHP will send an HTTP 500 result header on a fatal error. This is usefull when working with AJAX applications.
the ini-setting "detect_unicode" is indeed "zend.detect_unicode" (according to the phpinfo of my 5.4.4)
auto_globals_jit setting is also affecting $_REQUEST superglobal in 5.3 It is not explicitly stated in documentation.
Adding multiple directories to open_basedir:
open_basedir = "/var/www/htdocs/:/var/www/tmp/" adds both paths /var/www/htdocs/ and /var/www/tmp/. Do not forget the trailing slash, otherwise the last directory will be considered as a prefix (< 5.3.4).
On Windows you use ; as the seperator.
note that when you turn on zend.multibyte,you should change mbstring internal encoding to match the script encoding.
example:
(php.ini)
zend.multibyte = On
zend.script_encoding = utf-8
;note this:
mbstring.internal_encoding = utf-8
another example:
(php.ini)
zend.multibyte = On
(script)
<?php
declare(encoding = 'utf-8');
ini_set('mbstring.internal_encoding', 'utf-8');
//now do your work...
?>
A handy trick to pick up parse errors in test_file.php if you can't set display_errors in php.ini or use .htaccess:
<?php
error_reporting (E_ALL);
ini_set ('display_errors', true);
include('./test_file.php');
?>
"post_max_size"
"[..]This can be tracked in various ways, e.g. by passing the $_GET variable to the script processing the data, i.e. <form action="edit.php?processed=1">, and then checking if $_GET['processed'] is set."
using PHP 4.4.8 it seems that only the $_POST array will be empty in case of the file is largen than post_max_size.
so above mentioned method does not work in my case.
i need to use $_POST['processed'] instead of $_GET['processed']
to make sure that all requests use SSL you can use this in a file that is set for auto_prepend_file. This ensures that all requests are SSL
<?php
if(empty($_SERVER['HTTPS']) || strtolower($_SERVER['HTTPS']) != 'on' )
header("Location: https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}") and exit();
?>
I wish the documentation was more clear as to whether the arg_separator.output character is automatically encoded when PHP outputs it. In other words, is "&" valid or do I need to specify the encoded character "&"? It would make sense to specify only "&" and hope that it is encoded as needed. That way the value could be read by other functions and encoded only when output to HTML, rather than having to test whether it is already encoded and decode it when necessary (for header redirection for example)
I did a little experimentation on the behaviour of auto_prepend_file as the order of access wasn't clear to me from the documentation.
1. Apache checks to see if the target file exists.
2. The prepend file is called
3. The target file is called
This means that you can use auto_prepend_file to change the target file before you access it however you can't generate new files.
This is a possible solution for a problem which seems to be a php-ini-problem but is not.
If a $_POST is used with large fields e.g. textarea's with more than 120kb characters php returns a blank screen, even if the max_post_size is 8M.
This problem may be caused by an apache-module SecFilter.
Adding the following lines to the .htaccess solves the problem.
SecFilterEngine Off
SecFilterScanPOST Off
I know this is not a php-issue, but i'm still posting it here since it looks like it is a php-problem and I did not find any sites or forums offering this solution.
If you are having trouble getting the auto_prepend_file to work with the command line interface make sure that you have set it in the cli specific php.ini and that the read permission is set correctly for that php.ini file.
If you want to display the upload limit without knowing the server configuration, this may be useful:
<?php
function let_to_num($v){ //This function transforms the php.ini notation for numbers (like '2M') to an integer (2*1024*1024 in this case)
$l = substr($v, -1);
$ret = substr($v, 0, -1);
switch(strtoupper($l)){
case 'P':
$ret *= 1024;
case 'T':
$ret *= 1024;
case 'G':
$ret *= 1024;
case 'M':
$ret *= 1024;
case 'K':
$ret *= 1024;
break;
}
return $ret;
}
$max_upload_size = min(let_to_num(ini_get('post_max_size')), let_to_num(ini_get('upload_max_filesize')));
echo "Maximum upload file size is ".($max_upload_size/(1024*1024))."MB.";
?>
Do note however that this limit is not completely reliable; there are other factors which need to be taken into account, such as any other $_POST data and their size, the memory limit, and the script time limit. This does, however, give some rough limit, and helps you avoid "Doh!" problems where you can't figure out why your file won't upload. :)
Please be mindful, that if you plan on re-configuring / recompiling to add --enable-memory-limit support, you may need to run a 'make clean' before you run 'make'. Otherwise, you may end up with a phpinfo() that shows up with --enable-memory-limit as a configure parameter, but the memory_get_usage() function will still force a fatal error.
