<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/security.cgi-bin.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'security.cgi-bin.shell.php',
    1 => 'Cas 4 : Ex&eacute;cutable PHP &agrave; l\'ext&eacute;rieur de l\'arborescence du serveur',
    2 => 'Cas 4 : Ex&eacute;cutable PHP &agrave; l\'ext&eacute;rieur de l\'arborescence du serveur',
  ),
  'up' => 
  array (
    0 => 'security.cgi-bin.php',
    1 => 'Binaires CGI',
  ),
  'prev' => 
  array (
    0 => 'security.cgi-bin.doc-root.php',
    1 => 'Cas 3 : Utilisation du &quot;doc_root&quot; ou du &quot;user_dir&quot;',
  ),
  'next' => 
  array (
    0 => 'security.apache.php',
    1 => 'Install&eacute; en tant que module Apache',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'security/cgi-bin.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="security.cgi-bin.shell" class="sect1">
    <h2 class="title">
     Cas 4 : Exécutable PHP à l&#039;extérieur de l&#039;arborescence du serveur
    </h2>
    <p class="para">
     Une solution extrêmement sécurisée est de
     mettre l&#039;exécutable PHP à l&#039;extérieur de l&#039;arborescence
     du serveur web. Dans le répertoire
     <var class="filename">/usr/local/bin</var>, par exemple.
     Le seul véritable inconvénient de cette méthode est qu&#039;il faudra
     rajouter une ligne comme celle-ci :
     <div class="informalexample">
      <div class="example-contents">
<div class="cdata"><pre>
#!/usr/local/bin/php
</pre></div>
      </div>

     </div>
     au début de chaque fichier contenant des balises PHP. Il faudra aussi rendre les
     scripts PHP exécutables. En somme, le fichier doit être traité
     exactement comme tout autre script écrit en Perl ou en
     sh ou en un autre langage de script qui utilise <code class="literal">#!</code> comme
     mécanisme pour lancer l&#039;interpréteur lui-même.
    </p>
    <p class="para">
     Pour que l&#039;exécutable PHP prenne en compte les variables
     d&#039;environnement <var class="envar">PATH_INFO</var> et
     <var class="envar">PATH_TRANSLATED</var> correctement avec cette configuration,
     la directive INI
     <a href="ini.core.php#ini.cgi.discard-path" class="link">cgi.discard_path</a>
     doit être activée.
    </p>
   </div><?php manual_footer($setup); ?>