<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/install.unix.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'en',
  ),
  'this' => 
  array (
    0 => 'install.unix.commandline.php',
    1 => 'CGI and command line setups',
    2 => 'CGI and command line setups',
  ),
  'up' => 
  array (
    0 => 'install.unix.php',
    1 => 'Installation on Unix systems',
  ),
  'prev' => 
  array (
    0 => 'install.unix.source.php',
    1 => 'Installing from source on Unix and macOS systems',
  ),
  'next' => 
  array (
    0 => 'install.unix.apache2.php',
    1 => 'Apache 2.x on Unix systems',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'en',
    'path' => 'install/unix/commandline.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="install.unix.commandline" class="sect1">
   <h2 class="title">CGI and command line setups</h2>
   <p class="para">
    By default, PHP is built as both a <abbr title="Command Line Interpreter/Interface">CLI</abbr> and
    <abbr title="Common Gateway Interface">CGI</abbr> program, which can be used for CGI
    processing. If you are running a web server that PHP has module
    support for, you should generally go for that solution for
    performance reasons. However, the CGI version enables users to run
    different PHP-enabled pages under different user-ids.
   </p>
   <div class="warning"><strong class="warning">Warning</strong><p class="para">A server deployed in CGI mode is open
to several possible vulnerabilities. Please read our
<a href="security.cgi-bin.php" class="link">CGI security section</a> to learn how to
defend yourself from such attacks.</p></div>
   
   <div class="sect2" id="install.unix.commandline.testing">
    <h3 class="title">Testing</h3>
    <p class="simpara">
     If you have built PHP as a CGI program, you may test your build
     by typing <strong class="command">make test</strong>.  It is always a good idea
     to test your build.  This way you may catch a problem with PHP on
     your platform early instead of having to struggle with it later.
    </p>
   </div>

   <div class="sect2" id="install.unix.commandline.using-variables">
    <h3 class="title">Using Variables</h3>
    <p class="simpara">
      Some <a href="reserved.variables.server.php" class="link">server supplied
      environment variables</a> are not defined in the 
      current <a href="https://datatracker.ietf.org/doc/html/rfc3875" class="link external">&raquo;&nbsp;CGI/1.1 specification</a>.
      Only the following variables are defined there: <var class="varname">AUTH_TYPE</var>, 
      <var class="varname">CONTENT_LENGTH</var>, <var class="varname">CONTENT_TYPE</var>,
      <var class="varname">GATEWAY_INTERFACE</var>, <var class="varname">PATH_INFO</var>, 
      <var class="varname">PATH_TRANSLATED</var>, <var class="varname">QUERY_STRING</var>,
      <var class="varname">REMOTE_ADDR</var>, <var class="varname">REMOTE_HOST</var>, 
      <var class="varname">REMOTE_IDENT</var>, <var class="varname">REMOTE_USER</var>,
      <var class="varname">REQUEST_METHOD</var>, <var class="varname">SCRIPT_NAME</var>, 
      <var class="varname">SERVER_NAME</var>, <var class="varname">SERVER_PORT</var>,
      <var class="varname">SERVER_PROTOCOL</var>, and <var class="varname">SERVER_SOFTWARE</var>.
      Everything else should be treated as &#039;vendor extensions&#039;.
    </p>
   </div>
   
  </div><?php manual_footer($setup); ?>