]> granicus.if.org Git - apache/commitdiff
General cleanups and modifications to a few things to make them more
authorMarc Slemko <marc@apache.org>
Sat, 26 Apr 1997 06:58:39 +0000 (06:58 +0000)
committerMarc Slemko <marc@apache.org>
Sat, 26 Apr 1997 06:58:39 +0000 (06:58 +0000)
technically accurate, IMHO.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@78023 13f79535-47bb-0310-9956-ffa450edef68

docs/manual/misc/FAQ.html

index 44248f353a8eeb6fca7334a8b0afcd10eb792b60..40b63846a8bda456115c20f7e044b701f77e648b 100644 (file)
@@ -8,7 +8,7 @@
   <!--#include virtual="header.html" -->
   <H1>Apache Server Frequently Asked Questions</H1>
   <P>
-  $Revision: 1.42 $ ($Date: 1997/04/26 05:13:50 $)
+  $Revision: 1.43 $ ($Date: 1997/04/26 06:58:39 $)
   </P>
   <P>
   The latest version of this FAQ is always available from the main
     <P>
     Apache tries to be helpful when it encounters a problem.  In many
     cases, it will provide some details by writing one or messages to
-    the server error log (see the
+    the server error log.  Sometimes this is enough for you to diagnose 
+    &amp; fix the problem yourself (such as file permissions or the like).
+    The default location of the error log is 
+    <CODE>/usr/local/etc/httpd/logs/error_log</CODE>, but see the 
     <A
      HREF="http:../mod/core.html#errorlog"
     ><SAMP>ErrorLog</SAMP></A>
-    directive).  Somethimes this is enough for you to diagnose &amp;
-    fix the problem yourself (such as file permissions or the like).
+    directive in your config files for the location on your server.
     </P>
    </LI>
    <LI><STRONG>Check the
     <A
-     HREF="http://www.apache.org/docs/misc/FAQ"
+     HREF="http://www.apache.org/docs/misc/FAQ.html"
     >FAQ</A>!</STRONG>
     <P>
     The latest version of the Apache Frequently-Asked Questions list can
     that your issue has already been reported, please <EM>don't</EM> add
     a &quot;me, too&quot; report.  If the original report isn't closed
     yet, we suggest that you check it periodically.  You might also
-    consider contacting the original submittor, because there may be an
+    consider contacting the original submitter, because there may be an
     email exchange going on about the issue that isn't getting recorded
     in the database.
     </P>
     </CODE>
     </P>
     <P>
-    (Substitute the appropiate locations for your
+    (Substitute the appropriate locations for your
     <SAMP>ServerRoot</SAMP> and your <SAMP>httpd</SAMP> and
     <SAMP>core</SAMP> files.  You may have to use <CODE>gdb</CODE>
     instead of <CODE>dbx</CODE>.)
   </P>
   <P>
   Friendly interaction between Apache and NCSA developers should ensure
-  that fundamental feature enhancments stay consistent between the two
+  that fundamental feature enhancements stay consistent between the two
   servers for the foreseeable future.
   </P>
   <HR>
       the ScriptAlias?</STRONG>
      </A>
   <P>
-  Apache recognises all files in a directory named as a
+  Apache recognizes all files in a directory named as a
   <A
    HREF="../mod/mod_alias.html#scriptalias"
   ><SAMP>ScriptAlias</SAMP></A>
   <P>
   To persuade Apache to execute scripts in other locations, such as in
   directories where normal documents may also live, you must tell it how
-  to recognise them - and also that it's okey to execute them.  For
+  to recognize them - and also that it's okay to execute them.  For
   this, you need to use something like the
   <A
    HREF="../mod/mod_mime.html#addhandler"
      </DD>
     </DL>
     </P>
-    The server will then recognise that all files in that location (and
+    The server will then recognize that all files in that location (and
     its logical descendants) that end in &quot;<SAMP>.cgi</SAMP>&quot;
     are script files, not documents.
    </LI>
   <P>
   It means just what it says: the server was expecting a complete set of
   HTTP headers (one or more followed by a blank line), and didn't get
-  them.  The most common cause of this is Perl scripts which haven't
-  disabled buffering; if you insert the following statements before your
-  first <CODE>print</CODE> statement, this will probably go away.
+  them.  The most common cause of this (aside from people not
+  outputting the required headers at all) a result of an interaction
+  with perl's output buffering.  To make perl flush its buffers 
+  after each output statement, insert the following statements before your
+  first <CODE>print</CODE> or <CODE>write</CODE> statement:
   </P>
   <P>
   <CODE>
   </CODE>
   </P>
   <P>
+  This is generally only necessary when you are calling external 
+  programs from your script that send output to stdout.  
+  <P>
   If your script isn't written in Perl, do the equivalent thing for
   whatever language you <EM>are</EM> using (<EM>e.g.</EM>, for C, call 
   <CODE>fflush()</CODE> after writing the headers).
   SSI (an acronym for Server-Side Include) directives allow static HTML
   documents to be enhanced at run-time (<EM>e.g.</EM>, when delivered to
   a client by Apache).  The format of SSI directives is covered
-  elsewhere; suffice it to say that Apache supports not only SSI but
+  in the <A HREF="../mod/mod_include.html">mod_include manual</A>; 
+  suffice it to say that Apache supports not only SSI but
   xSSI (eXtended SSI) directives.
   </P>
   <P>
   <SAMP>Last-Modified</SAMP> header based upon the last modification
   time of the file being parsed.  Note that this may actually be lying
   to the client if the parsed file doesn't change but the SSI-inserted
-  content does.
+  content does; if the included content changes often, this can result
+  in stale copies being cached.
   </P>
   <HR>
  </LI>
   <P>
   So you want to include SSI directives in the output from your CGI
   script, but can't figure out how to do it?
-  The short answer is &quot;you can't.&quot;  This has been regarded as a
-  security liability, and the basic solution is for your script itself to do
-  what the SSIs would be doing.  After all, it's generating the
-  rest of the content.
+  The short answer is &quot;you can't.&quot;  This is potentially
+  a security liability and, more importantly, it can not be cleanly
+  implemented under the current server API.  The best workaround
+  is for your script itself to do what the SSIs would be doing.
+  After all, it's generating the rest of the content.
   </P>
   <P>
   This is a feature The Apache Group hopes to add in the next major
      </A>
   <P>
   Apache version 1.1 and above comes with a proxy module. If compiled
-  in, this will make Apache act as a caching-proxy server.
+  in, this will make Apache act as a caching-proxy server.  
   </P>
   <HR>
  </LI>
       virtual hosts?</STRONG>
      </A>
   <P>
-  The Apache server can behave unpredictably when it encounters some
-  resource limitations.  One of these is the <EM>per</EM>-process limit
-  on <STRONG>file descriptors</STRONG>, and that's almost always the
-  cause of problems seen when adding virtual hosts.  In this
-  case, it is often not actually Apache that's encountering the problem, but 
-  some library routine (such as <CODE>gethostbyname()</CODE>)
-  which needs file descriptors and doesn't complain intelligibly when it
-  can't get them.
+  You are probably running into resource limitations in your 
+  operating system.  The most common limitation is the 
+  <EM>per</EM>-process limit on <STRONG>file descriptors</STRONG>, 
+  which is almost always the cause of problems seen when adding 
+  virtual hosts.  Apache often does not give an intuitive error 
+  message because it is normally some library routine (such as 
+  <CODE>gethostbyname()</CODE>) which needs file descriptors and 
+  doesn't complain intelligibly when it can't get them.  
   </P>
   <P>
   Each log file requires a file descriptor, which means that if you are
-  using seperate access and error logs for each virtual host each
-  virtual host  needs two file descriptors.  Each 
+  using separate access and error logs for each virtual host, each
+  virtual host needs two file descriptors.  Each 
   <A
    HREF="../mod/core.html#listen"
   ><SAMP>Listen</SAMP></A>
   </P>
   <P>
   Typical values for &lt;<EM>n</EM>&gt; that we've seen are in
-  the neighbourhoods of 128 or 250.  When the server bumps into the file
-  descriptor limit, it may dump core with a SIGSEGV, or it might just
+  the neighborhood of 128 or 250.  When the server bumps into the file
+  descriptor limit, it may dump core with a SIGSEGV, it might just
   hang, or it may limp along and you'll see (possibly meaningful) errors
   in the error log.  One common problem that occurs when you run into
   a file descriptor limit is that CGI scripts stop being executed
-  properly at times.
+  properly.
   </P>
   <P>
   As to what you can do about this:
         HREF="../mod/mod_log_config.html"
        ><SAMP>mod_log_config</SAMP></A>
        to log all requests to a single log file while including the name
-       of the virtual host in the log file.
+       of the virtual host in the log file.  You can then write a 
+       script to split the logfile into separate files later if
+       necessary.
    </LI>
    <LI>Increase the number of file descriptors available to the server
        (see your system's documentation on the <CODE>limit</CODE> or
     subsequent requests to the same server.
    </LI>
    <LI>It's relatively trivial for someone on your system to put up a
-    page that will steal the cached password from a client's cache.  Can
-    you say &quot;password grabber&quot;?
+    page that will steal the cached password from a client's cache
+    without them knowing.  Can you say &quot;password grabber&quot;?
    </LI>
   </UL>
   <P>
      </A>
   <P>
   The simple answer is that it was becoming too difficult to keep the
-  version being included with Apache synchronised with the master copy
+  version being included with Apache synchronized with the master copy
   at the
   <A
    HREF="http://www.fastcgi.com/servers/apache/"
   the output as the script is generating it.
   </P>
   <P>
-  To avoid this, Apache recognises scripts whose names begin with
+  To avoid this, Apache recognizes scripts whose names begin with
   &quot;<SAMP>nph-</SAMP>&quot; as <EM>non-parsed-header</EM> scripts.
   That is, Apache won't buffer their output, but connect it directly to
   the socket going back to the client.
   <P>
   This is a conflict between your C library includes and your kernel
   includes.  You need to make sure that the versions of both are matched
-  properly.  There are two workarounds:
+  properly.  There are two workarounds, either one will solve the problem:
   </P>
   <UL>
    <LI>Remove the definition of <CODE>struct iovec</CODE> from your C
-    library includes.  Or,
+    library includes.  It is located in <CODE>/usr/include/sys/uio.h</CODE>.  
+    <STRONG>Or,</STRONG>
    </LI>
    <LI>Add  <CODE>-DNO_WRITEV</CODE> to the <CODE>EXTRA_CFLAGS</CODE>
     line in your <SAMP>Configuration</SAMP> and reconfigure/rebuild.
+    This hurts performance and should only be used as a last resort.
    </LI>
   </UL>
   </P>
   <P>
   In Apache version 1.2 (beginning with 1.2b8), the error log message
   about dumped core includes the directory where the dump file should be
-  located.  However, some operating systems regard the dumping of core
-  by processes with superuser authority as a potential security issue,
-  and short-circuit the dump code, leaving no file.  Since most Web
-  servers listen on port 80 (a privileged port), they need to run with
-  superuser authority, and so this short-circuit will apply to them.
+  located.  However, many Unixes do not allow a process that has
+  called <CODE>setuid()</CODE> to dump core for security reasons; 
+  the typical Apache setup has the server started as root to bind to 
+  port 80, after which it changes UIDs to a non-privileged user to 
+  serve requests.
   </P>
   <P>
   Dealing with this is extremely operating system-specific, and may
   governments have restrictions upon the import, export, and use of
   encryption technology.  If Apache included SSL in the base package,
   its distribution would involve all sorts of legal and bureaucratic
-  issues., and it would no longer be freely available.
+  issues., and it would no longer be freely available.  Also, some of
+  the technology required to talk to current clients using SSL is 
+  patented by <A HREF="http://www.rsa.com/">RSA Data Security</A>, 
+  who restricts its use without a license.
   </P>
   <P>
   Some SSL implementations of Apache are available, however; see the