<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_proxy_fcgi - Serveur HTTP Apache Version 2.5</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
<p class="apache">Serveur HTTP Apache Version 2.5</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_proxy_fcgi</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_proxy_fcgi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_proxy_fcgi.html" title="Français">&nbsp;fr&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Module fournissant le support de FastCGI à
<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>proxy_fcgi_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_proxy_fcgi.c</td></tr>
<tr><th><a href="module-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible depuis la version 2.3 d'Apache</td></tr></table>
<h3>Sommaire</h3>

    <p>Pour fonctionner, ce module <em>nécessite</em> le chargement de
    <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. Il fournit le support du protocole <a href="http://www.fastcgi.com/">FastCGI</a>.</p>

    <p>Ainsi, pour pouvoir traiter le protocole <code>FastCGI</code>,
    <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> et <code class="module"><a href="../mod/mod_proxy_fcgi.html">mod_proxy_fcgi</a></code>
    doivent être chargés dans le serveur.</p>

    <p>A la différence de <a href="http://httpd.apache.org/mod_fcgid/">mod_fcgid</a> et <a href="http://www.fastcgi.com/">mod_fastcgi</a>,
    <code class="module"><a href="../mod/mod_proxy_fcgi.html">mod_proxy_fcgi</a></code> n'est pas en mesure de démarrer le
    processus de l'application ; <code class="program"><a href="../programs/fcgistarter.html">fcgistarter</a></code> est
    fourni à cet effet sur certaines plateformes. Le framework
    applicatif FastCGI utilisé peut aussi fournir la gestion des
    processus ou des lancements de programmes externes.</p>

    <div class="warning"><h3>Avertissement</h3>
      <p>N'activez pas la fonctionnalité de mandataire avant d'avoir <a href="mod_proxy.html#access">sécurisé votre serveur</a>. Les
      serveurs mandataires ouverts sont dangereux non seulement pour
      votre réseau, mais aussi pour l'Internet au sens large.</p>
    </div>
</div>
<div id="quickview"><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Exemples</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#env">Variables d'environnement</a></li>
</ul><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#proxyfcgibackendtype">ProxyFCGIBackendType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyfcgisetenvif">ProxyFCGISetEnvIf</a></li>
</ul>
<h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_proxy_fcgi">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_proxy_fcgi">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
<ul class="seealso">
<li><code class="program"><a href="../programs/fcgistarter.html">fcgistarter</a></code></li>
<li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li>
<li><code class="module"><a href="../mod/mod_authnz_fcgi.html">mod_authnz_fcgi</a></code></li>
<li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Exemples</a> <a title="Lien permanent" href="#examples" class="permalink">&para;</a></h2>
    <p>Pour que ces exemples fonctionnent, vous ne devez pas oublier
    d'activer <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> et
    <code class="module"><a href="../mod/mod_proxy_fcgi.html">mod_proxy_fcgi</a></code>.</p>

    <div class="example"><h3>Instance d'application unique</h3><pre class="prettyprint lang-config">ProxyPass "/mon_appli/" "fcgi://localhost:4000/"</pre>
</div>

    
    <p><code class="module"><a href="../mod/mod_proxy_fcgi.html">mod_proxy_fcgi</a></code> interdisant par défaut la
    réutilisation des connexions, lorsqu'une requête a été traitée, la
    connexion ne sera pas maintenue ouverte par le processus enfant
    httpd, et ne sera donc pas réutilisée. Cependant, si l'application
    FastCGI supporte les connexions httpd simultanées, vous pouvez opter
    pour la réutilisation des connexions comme dans l'exemple suivant :</p>

    <div class="example"><h3>Instance d'application unique, réutilisation
    des connexions (versions 2.4.11 et supérieures)</h3><pre class="prettyprint lang-config">ProxyPass "/myapp/" "fcgi://localhost:4000/" enablereuse=on</pre>
</div>

    <div class="note"><h3>Active la réutilisation des connexions vers un serveur FCGI
    d'arrière-plan tel que PHP-FPM</h3>
    <p>Il faut garder à l'esprit que PHP-FPM (en février 2018) utilise un modèle
    du style prefork ; autrement dit, chacun de ses processus de travail ne peut
    gérer qu'une connexion à la fois.<br /> Par défaut, lorsqu'il est configuré
    avec <code>enablereuse=on</code> et lorsqu'un MPM à base de threads est
    utilisé (comme <code class="module"><a href="../mod/worker.html">worker</a></code> ou <code class="module"><a href="../mod/event.html">event</a></code>), mod_proxy
    autorise un jeu de <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> connexions vers le serveur
    d'arrière-plan pour chaque processus httpd, et par conséquent, il faut
    prêter une attention particulière aux situations suivantes :</p>
    <ul>
      <li>Avec une charge en HTTP/1, il est fort probable que le nombre de
      connexions vers le serveur FCGI d'arrière-plan augmente jusqu'à atteindre
      <code class="directive"><a href="../mod/mpm_common.html#maxrequestworkers">MaxRequestWorkers</a></code>.</li>
      <li>Avec une charge en HTTP/2, et vue la manière dont
      <code class="module"><a href="../mod/mod_http2.html">mod_http2</a></code> est implémenté, il y a des threads de travail
      h2 additionnels qui peuvent forcer la création de connexions
      supplémentaires vers le serveur d'arrière-plan. Le nombre total de
      connexions que contiennent les jeux de connexions peut alors dépasser
      <code class="directive"><a href="../mod/mpm_common.html#maxrequestworkers">MaxRequestWorkers</a></code>.</li>
    </ul>
    <p>Le nombre maximum de processus de travail PHP-FPM doit être défini
    judicieusement car il est possible qu'ils finissent par rester dans l'état
    occupé ("busy") pour ne gérer que des connexions persistantes inactives,
    sans avoir la possibilité d'en établir de nouvelles ; ce qui se traduira
    pour l'utilisateur final par une pile de "HTTP request timeouts".</p>
    </div>

    <p>Dans l'exemple suivant, l'URI de la requête est transmis en tant
    que chemin du système de fichiers pour l'exécution du démon PHP-FPM.
    L'URL de la requête est implicitement ajoutée au second paramètre.
    PHP-FPM est à l'écoute de l'hôte et du port qui
    suivent fcgi://. La conservation/réutilisation des connexions est activée.</p>
    <div class="example"><h3>PHP-FPM</h3><pre class="prettyprint lang-config">ProxyPassMatch "^/myapp/.*\.php(/.*)?$" "fcgi://localhost:9000/var/www/" enablereuse=on</pre>
</div>

    <p>Dans l'exemple suivant, l'URI de la requête est transmis en tant
    que chemin du système de fichiers pour l'exécution du démon PHP-FPM.
    Dans ce cas cependant, PHP-FPM est à l'écoute d'un socket de domaine
    unix (UDS). Cette fonctionnalité est disponible à partir de la
    version 2.4.9. Avec cette syntaxe, si un nom d'hôte et un port sont
    ajoutés après fcgi://, ils seront ignorés.</p>
    <div class="example"><h3>PHP-FPM with UDS</h3><pre class="prettyprint lang-config">ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php5-fpm.sock|fcgi://localhost/var/www/"</pre>
</div>

    <p>Dans l'exemple suivant, on force le module à traiter les paquets de
    données en provenance du serveur FCGI d'arrière-plan dès leur réception, sans les
    faire transiter par un tampon.
    </p>
    <div class="example"><h3>Force le traitement des données FCGI sans mise en tampon</h3><pre class="prettyprint lang-config">ProxyPassMatch "^/myapp/.*\.php(/.*)?$" "fcgi://localhost:9000/var/www/" enablereuse=on flushpackets=on</pre>
</div>

    <p>L'exemple suivant est similaire au précédent avec une différence : ici,
    les données en provenance du serveur FCGI d'arrière-plan sont traitées après un
    temps de valeur fixe (elles sont mises en tampon). Cette méthode est
    utile si le serveur FCGI d'arrière-plan envoie ses données sous forme
    de petits paquets, auquel cas le traitement immédiat de chacun d'entre eux
    serait inefficace et couteux en ressources. Notez que cet exemple ne sera
    peut-être pas adapté dans le cas où l'envoi de paquets de données par
    l'application FCGI est bloqué par l'attente de données en provenance du
    client.
    </p>
    <div class="example"><h3>Force le traitement des données FCGI après une mise en
    tampon de 20ms</h3><pre class="prettyprint lang-config">ProxyPassMatch "^/myapp/.*\.php(/.*)?$" "fcgi://localhost:9000/var/www/" flushpackets=on flushwait=20</pre>
</div>

    <p>La passerelle à répartition de charge nécessite le chargement du
    module <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> et d'au moins un module
    fournissant un algorithme de répartition de charge, comme
    <code class="module"><a href="../mod/mod_lbmethod_byrequests.html">mod_lbmethod_byrequests</a></code> en plus des modules
    déjà cités. <code class="module"><a href="../mod/mod_lbmethod_byrequests.html">mod_lbmethod_byrequests</a></code> est le module
    par défaut et sera utilisé dans cet exemple de configuration.</p>

    <div class="example"><h3>Passerelle à répartition de charge vers plusieurs
    instances de l'application</h3><pre class="prettyprint lang-config">ProxyPass "/myapp/" "balancer://myappcluster/"
&lt;Proxy "balancer://myappcluster/"&gt;
    BalancerMember "fcgi://localhost:4000"
    BalancerMember "fcgi://localhost:4001"
&lt;/Proxy&gt;</pre>
</div>

    <p>Vous pouvez aussi forcer le traitement d'une requête en tant que
    requête de mandataire inverse en créant un court-circuiteur de
    gestionnaire approprié. Dans l'exemple ci-dessous, toutes les
    requêtes pour des scripts PHP seront transmises au serveur FastCGI
    spécifié par mandat inverse. Cette fonctionnalité est disponible à
    partir de la version 2.4.10 du serveur HTTP Apache. Pour des raisons
    de performances, il est recommandé de définir un <a href="mod_proxy.html#workers">worker (configuration d'un
    mandataire)</a> représentant le même serveur fcgi:// d'arrière-plan.
    Avec cette configuration, il est possible d'effectuer une
    correspondance directe entre l'URI et le chemin du fichier sur le
    serveur, et le chemin local du fichier sera alors transmis au serveur
    d'arrière-plan. Lorsque FastCGI est configuré ainsi, le serveur est
    en mesure de calculer le PATH_INFO le plus approprié.
      </p>
	<div class="example"><h3>Mandataire via un gestionnaire</h3><pre class="prettyprint lang-config">&lt;FilesMatch "\.php$"&gt;
    # Note : la seule partie variable est /path/to/app.sock
    SetHandler  "proxy:unix:/path/to/app.sock|fcgi://localhost/"
&lt;/FilesMatch&gt;
   # Définition d'une configuration de mandataire qui convient.
   # La partie qui est mise en correspondance avec la valeur de
   # SetHandler est la partie qui suit le "pipe". Si vous devez faire
   # une distinction, "localhost" peut être changé en un nom de serveur
   # unique.
   &lt;Proxy "fcgi://localhost/" enablereuse=on max=10&gt;
   &lt;/Proxy&gt;

&lt;FilesMatch ...&gt;
    SetHandler  "proxy:fcgi://localhost:9000"
&lt;/FilesMatch&gt;

&lt;FilesMatch ...&gt;
    SetHandler  "proxy:balancer://myappcluster/"
&lt;/FilesMatch&gt;</pre>
</div>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="env" id="env">Variables d'environnement</a> <a title="Lien permanent" href="#env" class="permalink">&para;</a></h2>
    <p>En plus des directives de configuration qui contrôlent le
    comportement de <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>, de nombreuses
    <dfn>variables d'environnement</dfn> permettent de piloter le
    fournisseur du protocole FCGI :</p>
    <dl>
        <dt>proxy-fcgi-pathinfo</dt>
        <dd>Lorsqu'il est configuré via les directives <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> ou <code class="directive"><a href="../mod/mod_proxy.html#proxypassmatch">ProxyPassMatch</a></code>,
	<code class="module"><a href="../mod/mod_proxy_fcgi.html">mod_proxy_fcgi</a></code> ne définit pas la variable
	d'environnement <var>PATH_INFO</var>,
	ce qui permet au serveur FCGI d'arrière-plan de déterminer
	correctement <var>SCRIPT_NAME</var> et <var>Script-URI</var>, et
	de se conformer à la section 3.3 de la RFC 3875. Si au contraire
	vous avez souhaitez que <code class="module"><a href="../mod/mod_proxy_fcgi.html">mod_proxy_fcgi</a></code> génère une
	"estimation la plus exacte possible" de <var>PATH_INFO</var>,
	définissez la variable d'environnement
	<var>proxy-fcgi-pathinfo</var>. Ceci peut servir de
	contournement pour une bogue présente dans certaines
	implémentations de FCGI. Cette variable peut être
	multivaluée afin de pouvoir choisir la valeur la plus appropriée
	(versions 2.4.11 et supérieures) :
	<dl>
          <dt>first-dot</dt>
          <dd>PATH_INFO est extrait à partir du slash qui suit le
	  <em>premier</em> "." de l'URL.</dd>
          <dt>last-dot</dt>
          <dd>PATH_INFO est extrait à partir du slash qui suit le
	  <em>dernier</em> "." de l'URL.</dd>
          <dt>full</dt> 
          <dd>PATH_INFO est calculé en supposant que l'URL correspond au
	  chemin du système de fichiers.</dd>
          <dt>unescape</dt>
          <dd>PATH_INFO correspond à la partie chemin de l'URL avec ses
	  séquences d'échappement décodées.</dd>
          <dt>toute autre valeur</dt>
          <dd>PATH_INFO correspond à la partie chemin de l'URL.  
              Auparavant, c'était la seule option pour proxy-fcgi-pathinfo.</dd>
         </dl>
	</dd>
    </dl>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="proxyfcgibackendtype" id="proxyfcgibackendtype">Directive</a> <a name="ProxyFCGIBackendType" id="ProxyFCGIBackendType">ProxyFCGIBackendType</a> <a title="Lien permanent" href="#proxyfcgibackendtype" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Spécifie le type de l'application FastCGI d'arrière-plan</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyFCGIBackendType FPM|GENERIC</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ProxyFCGIBackendType FPM</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autorisées:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_fcgi</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.26 du serveur HTTP Apache</td></tr>
</table>
<p>Cette directive permet de spécifier le type de l'application FastCGI
d'arrière-plan. Certains serveurs FastCGI, comme PHP-FPM, utilisent de manière
historique des variables d'environnement exotiques pour identifier le type du
serveur mandataire utilisé. Définissez cette directive à "GENERIC" si votre
application n'est pas de type PHP-FPM et n'interpréter pas correctement des
variables d'environnement comme SCRIPT_FILENAME ou PATH_TRANSLATED telles
qu'elles sont définies par le serveur.</p>

<p>SCRIPT_FILENAME est un exemple de valeur modifiée par la définition de cette
directive. Historiquement, lorsqu'on utilisait le module
<code class="module"><a href="../mod/mod_proxy_fcgi.html">mod_proxy_fcgi</a></code>, SCRIPT_FILENAME était préfixé par la chaîne
"proxy:fcgi://". C'est cette variable que lisent certaines applications FastCGI
génériques en tant que valeur en entrée pour leur script ; cependant, PHP-FPM
peut supprimer le préfixe, puis garder en mémoire qu'il communique avec Apache.
Avec les versions 2.4.21 à 2.4.25, ce préfixe était automatiquement supprimé par
le serveur, empêchant ainsi PHP-FPM de détecter et interopérer avec Apache dans
certains scénarios.</p> 

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="proxyfcgisetenvif" id="proxyfcgisetenvif">Directive</a> <a name="ProxyFCGISetEnvIf" id="ProxyFCGISetEnvIf">ProxyFCGISetEnvIf</a> <a title="Lien permanent" href="#proxyfcgisetenvif" class="permalink">&para;</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Permet d'adapter la valeur des variables envoyées aux serveurs
FastCGI</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ProxyFCGISetEnvIf <var>conditional-expression</var>
    [!]<var>environment-variable-name</var>
    [<var>value-expression</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration globale, serveur virtuel, répertoire, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Surcharges autorisées:</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_proxy_fcgi</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibilité:</a></th><td>Disponible à partir de la version 2.4.26 du serveur HTTP Apache.</td></tr>
</table>
<p>Juste avant la transmission d'une requête au serveur FastCGI configuré, le
coeur du programme du serveur web définit un certain nombre de variables
d'environnement en fonction de certains détails de la requête considérée. Les
programmes FastCGI utilisent souvent ces variables comme données en entrée afin
de déterminer quels scripts sous-jacents ils vont exécuter, ou quelles données
en sortie doivent être produites.</p>
<p>Voici quelques exemples de variables d'environnement importantes :</p>
<ul>
  <li>SCRIPT_NAME</li>
  <li>SCRIPT_FILENAME</li>
  <li>REQUEST_URI</li>
  <li>PATH_INFO</li>
  <li>PATH_TRANSLATED</li>
</ul>

<p>Cette directive permet de passer outre les variables d'environnement
ci-dessus, entre autres. Elle est évaluée après la définition de la valeur
initiale de ces variables ; elle peuvent donc être utilisées comme entrées dans
les expressions définissants les conditions et les valeurs.</p>
<p>Syntaxe des paramètres :</p>
<dl>
<dt>conditional-expression</dt> 
<dd>Définit une condition en fonction de laquelle la
variable d'environnement qui suit sera modifiée ou non. Pour la syntaxe de cette
expression, reportez-vous aux exemples qui suivent ou à la spécification
détaillée dans le document <a href="../expr.html">ap_expr</a>.
   </dd>
<dt>environment-variable-name</dt> 
<dd>Spécifie le nom de la variable d'environnement à modifier, par exemple
PATH_INFO. Si elle est précédée d'un point d'exclamation, la définition de la
variable sera annulée.</dd>
<dt>value-expression</dt>
<dd>Spécifie la nouvelle valeur de la variable "environment-variable-name". On
peut inclure des
références arrières, comme "$1", issues de captures en provenance de
l'expression rationnelle <var>conditional-expression</var>. Si cette valeur est
omise, la variable est définie (ou sa valeur est écrasée) par une chaîne vide
— voir cependant la note ci-après.</dd>
</dl>
  
<div class="example"><pre class="prettyprint lang-config"># Une modification basique, inconditionnelle
ProxyFCGISetEnvIf "true" PATH_INFO "/example"

# Utilisation d'une variable d'environnement pour spécifier la nouvelle valeur
ProxyFCGISetEnvIf "true" PATH_INFO "%{reqenv:SCRIPT_NAME}"
<br />
# Utilisation de captures dans la condition et de références arrières dans la
# nouvelle valeur
ProxyFCGISetEnvIf "reqenv('PATH_TRANSLATED') =~ m#(/.*prefix)(\d+)(.*)#" PATH_TRANSLATED "$1$3"</pre>
</div>

<div class="note"><h3>Note : Annulation définition ou valeur vide</h3>
  La ligne suivante annule la définition de la variable <code>VARIABLE</code>,
  ce qui l'empêche d'être envoyée au serveur FastCGI :

    <pre class="prettyprint lang-config">ProxyFCGISetEnvIf true !VARIABLE</pre>


  La ligne suivante, quant à elle, efface la <em>valeur</em> de la variable
  <code>VARIABLE</code> en lui affectant la chaîne vide ; cette variable
  <code>VARIABLE</code> sera alors tout de même envoyée au serveur FastCGI :

    <pre class="prettyprint lang-config">ProxyFCGISetEnvIf true VARIABLE</pre>


  La spécification CGI/1.1 <a href="https://tools.ietf.org/html/rfc3875#section-4.1">ne fait pas de
  distinction</a> entre une variable contenant une chaîne vide et une variable qui
  n'existe pas. De nombreuses implémentations CGI et FastCGI font cependant
  cette distinction (ou permettent aux scripts de la faire). Le choix de celle
  que vous allez utiliser dépend de votre implémentation et de la raison qui
  vous pousse à modifier cette variable.
</div>


</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_proxy_fcgi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/mod/mod_proxy_fcgi.html" title="Français">&nbsp;fr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our <a href="https://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_proxy_fcgi.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else {
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2025 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>