summaryrefslogtreecommitdiff
path: root/docs/manual/misc/FAQ-D.html
blob: f54c7c3a5dbf9a24f4dfc0482947e302d367685e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
<!--#if expr="$FAQMASTER" -->
 <!--#set var="STANDALONE" value="" -->
 <!--#set var="INCLUDED" value="YES" -->
 <!--#if expr="$QUERY_STRING = TOC" -->
  <!--#set var="TOC" value="YES" -->
  <!--#set var="CONTENT" value="" -->
 <!--#else -->
  <!--#set var="TOC" value="" -->
  <!--#set var="CONTENT" value="YES" -->
 <!--#endif -->
<!--#else -->
 <!--#set var="STANDALONE" value="YES" -->
 <!--#set var="INCLUDED" value="" -->
 <!--#set var="TOC" value="" -->
 <!--#set var="CONTENT" value="" -->
<!--#endif -->
<!--#if expr="$STANDALONE" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
 <HEAD>
  <TITLE>Apache Server Frequently Asked Questions</TITLE>
 </HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
 <BODY
  BGCOLOR="#FFFFFF"
  TEXT="#000000"
  LINK="#0000FF"
  VLINK="#000080"
  ALINK="#FF0000"
 >
  <!--#include virtual="header.html" -->
  <H1 ALIGN="CENTER">Apache Server Frequently Asked Questions</H1>
  <P>
  $Revision: 1.8 $ ($Date: 2001/02/28 03:35:59 $)
  </P>
  <P>
  The latest version of this FAQ is always available from the main
  Apache web site, at
  &lt;<A
       HREF="http://www.apache.org/docs/misc/FAQ.html"
       REL="Help"
      ><SAMP>http://www.apache.org/docs/misc/FAQ.html</SAMP></A>&gt;.
  </P>
<!-- Notes about changes:                                           -->
<!--  - If adding a relative link to another part of the            -->
<!--    documentation, *do* include the ".html" portion.  There's a -->
<!--    good chance that the user will be reading the documentation -->
<!--    on his own system, which may not be configured for          -->
<!--    multiviews.                                                 -->
<!--  - When adding items, make sure they're put in the right place -->
<!--    - verify that the numbering matches up.                     -->
<!--  - *Don't* use <PRE></PRE> blocks - they don't appear          -->
<!--    correctly in a reliable way when this is converted to text  -->
<!--    with Lynx.  Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL>    -->
<!--    blocks inside a <P></P> instead.  This is necessary to get  -->
<!--    the horizontal and vertical indenting right.                -->
<!--  - Don't forget to include an HR tag after the last /P tag     -->
<!--    but before the /LI in an item.                              -->
  <P>
  If you are reading a text-only version of this FAQ, you may find numbers
  enclosed in brackets (such as &quot;[12]&quot;).  These refer to the list of
  reference URLs to be found at the end of the document.  These references
  do not appear, and are not needed, for the hypertext version.
  </P>
  <H2>The Questions</H2>
<OL TYPE="A">
<!--#endif -->
<!--#if expr="$TOC || $STANDALONE" -->
 <LI VALUE="4"><STRONG>Error Log Messages and Problems Starting Apache</STRONG>
  <OL>
   <LI><A HREF="#setgid">Why do I get &quot;<SAMP>setgid: Invalid
        argument</SAMP>&quot; at startup?</A>
   </LI>
   <LI><A HREF="#nodelay">Why am I getting &quot;<SAMP>httpd: could not
        set socket option TCP_NODELAY</SAMP>&quot; in my error log?</A>
   </LI>
   <LI><A HREF="#peerreset">Why am I getting &quot;<SAMP>connection
        reset by peer</SAMP>&quot; in my error log?</A>
   </LI>
   <LI><A HREF="#wheres-the-dump">The errorlog says Apache dumped core,
        but where's the dump file?</A>
   </LI>
   <LI><A HREF="#linux-shmget">When I run it under Linux I get &quot;shmget:
        function not found&quot;, what should I do?</A>
   </LI>
   <LI><A HREF="#nfslocking">Server hangs, or fails to start, and/or error log
        fills with &quot;<SAMP>fcntl: F_SETLKW: No record locks
        available</SAMP>&quot; or similar messages</A>
   </LI>
   <LI><A HREF="#aixccbug">Why am I getting "<SAMP>Expected &lt;/Directory&gt;
        but saw &lt;/Directory&gt;</SAMP>" when I try to start Apache?</A>
   </LI>
   <LI><A HREF="#redhat">I'm using RedHat Linux and I have problems with httpd
        dying randomly or not restarting properly</A>
   </LI>
   <LI><A HREF="#stopping">I upgraded from an Apache version earlier
        than 1.2.0 and suddenly I have problems with Apache dying randomly
        or not restarting properly</A>
   </LI>
   <LI><A HREF="#setservername">When I try to start Apache from a DOS
        window, I get a message like "<samp>Cannot determine host name.
	Use ServerName directive to set it manually.</samp>"  What does
	this mean?</A>
   </LI>
   <LI><A HREF="#ws2_32dll">When I try to start Apache for Windows, I get a message
	like "<samp>Unable To Locate WS2_32.DLL...</samp>". What should I do?</A>
   </LI>
   <LI><A HREF="#WSADuplicateSocket">Apache for Windows does not start.
        Error log contains this message "<samp>[crit] (10045) The attempted
	operation is not supported for the type of object referenced: Parent:
	WSADuplicateSocket failed for socket ###</samp>".  What does this
	mean?</a>
   </LI>
  </OL>
 </LI>
<!--#endif -->
<!--#if expr="$STANDALONE" -->
</OL>

<HR>

  <H2>The Answers</H2>
<!--#endif -->
<!--#if expr="! $TOC" -->

  <H3>D. Error Log Messages and Problems Starting Apache</H3>
<OL>

 <LI><A NAME="setgid">
      <STRONG>Why do I get &quot;<SAMP>setgid: Invalid
      argument</SAMP>&quot; at startup?</STRONG>
     </A>
  <P>
  Your
  <A HREF="../mod/mpm_common.html#group"><SAMP>Group</SAMP></A>
  directive (probably in <SAMP>conf/httpd.conf</SAMP>) needs to name a
  group that actually exists in the <SAMP>/etc/group</SAMP> file (or
  your system's equivalent).  This problem is also frequently seen when
  a negative number is used in the <CODE>Group</CODE> directive
  (<EM>e.g.</EM>, "<CODE>Group&nbsp;#-1</CODE>").  Using a group name
  -- not group number -- found in your system's group database should
  solve this problem in all cases.
  </P>
  <HR>
 </LI>

 <LI><A NAME="nodelay">
      <STRONG>Why am I getting &quot;<SAMP>httpd: could not set socket
      option TCP_NODELAY</SAMP>&quot; in my error log?</STRONG>
     </A>
  <P>
  This message almost always indicates that the client disconnected
  before Apache reached the point of calling <CODE>setsockopt()</CODE>
  for the connection.  It shouldn't occur for more than about 1% of the
  requests your server handles, and it's advisory only in any case.
  </P>
  <HR>
 </LI>

 <LI><A NAME="peerreset">
      <STRONG>Why am I getting &quot;<SAMP>connection reset by
      peer</SAMP>&quot; in my error log?</STRONG>
     </A>
  <P>
  This is a normal message and nothing about which to be alarmed.  It simply
  means that the client canceled the connection before it had been
  completely set up - such as by the end-user pressing the &quot;Stop&quot;
  button.  People's patience being what it is, sites with response-time
  problems or slow network links may experiences this more than
  high-capacity ones or those with large pipes to the network.
  </P>
  <HR>
 </LI>

 <LI><A NAME="wheres-the-dump">
      <STRONG>The errorlog says Apache dumped core, but where's the dump
      file?</STRONG>
     </A>
  <P>
  In Apache version 1.2, the error log message
  about dumped core includes the directory where the dump file should be
  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
  require rebuilding your system kernel.  Consult your operating system
  documentation or vendor for more information about whether your system
  does this and how to bypass it.  If there <EM>is</EM> a documented way
  of bypassing it, it is recommended that you bypass it only for the
  <SAMP>httpd</SAMP> server process if possible.
  </P>
  <P>
  The canonical location for Apache's core-dump files is the
  <A HREF="../mod/core.html#serverroot">ServerRoot</A>
  directory. As of Apache version 1.3, the location can be set <EM>via</EM>
  the
  <A HREF="../mod/mpm_common.html#coredumpdirectory"
  ><SAMP>CoreDumpDirectory</SAMP></A>
  directive to a different directory. Make sure that this directory is
  writable by the user the server runs as (as opposed to the user the server
  is <EM>started</EM> as).
  </P>
  <HR>
 </LI>

 <LI><A NAME="linux-shmget">
      <STRONG>When I run it under Linux I get &quot;shmget:
      function not found&quot;, what should I do?</STRONG>
     </A>
  <P>
  Your kernel has been built without SysV IPC support.  You will have
  to rebuild the kernel with that support enabled (it's under the
  &quot;General Setup&quot; submenu).  Documentation for kernel
  building is beyond the scope of this FAQ; you should consult the <A
  HREF="http://www.redhat.com/mirrors/LDP/HOWTO/Kernel-HOWTO.html">Kernel
  HOWTO</A>, or the documentation provided with your distribution, or
  a <A HREF="http://www.redhat.com/mirrors/LDP/HOWTO/META-FAQ.html">Linux
  newsgroup/mailing list</A>.  As a last-resort workaround, you can
  comment out the <CODE>#define&nbsp;USE_SHMGET_SCOREBOARD</CODE>
  definition in the <SAMP>LINUX</SAMP> section of
  <SAMP>src/conf.h</SAMP> and rebuild the server (prior to 1.3b4,
  simply removing <CODE>#define&nbsp;HAVE_SHMGET</CODE> would have
  sufficed).  This will produce a server which is slower and less
  reliable.
  </P>
  <HR>
 </LI>

 <LI><A NAME="nfslocking">
      <STRONG>Server hangs, or fails to start, and/or error log
      fills with &quot;<SAMP>fcntl: F_SETLKW: No record locks
      available</SAMP>&quot; or similar messages</STRONG>
     </A>

  <P>
  These are symptoms of a fine locking problem, which usually means that
  the server is trying to use a synchronization file on an NFS filesystem.
  </P>
  <P>
  Because of its parallel-operation model, the Apache Web server needs to
  provide some form of synchronization when accessing certain resources.
  One of these synchronization methods involves taking out locks on a file,
  which means that the filesystem whereon the lockfile resides must support
  locking.  In many cases this means it <EM>can't</EM> be kept on an
  NFS-mounted filesystem.
  </P>
  <P>
  To cause the Web server to work around the NFS locking limitations, include
  a line such as the following in your server configuration files:
  </P>
  <DL>
   <DD><CODE>LockFile /var/run/apache-lock</CODE>
   </DD>
  </DL>
  <P>
  The directory should not be generally writable (<EM>e.g.</EM>, don't use
  <SAMP>/var/tmp</SAMP>).
  See the <A HREF="../mod/mpm_common.html#lockfile"><SAMP>LockFile</SAMP></A>
  documentation for more information.
  </P>
  <HR>
 </LI>

 <LI><A NAME="aixccbug"><STRONG>Why am I getting "<SAMP>Expected
       &lt;/Directory&gt; but saw &lt;/Directory&gt;</SAMP>" when
       I try to start Apache?</STRONG></A>
   <P>
   This is a known problem with certain versions of the AIX C compiler.
   IBM are working on a solution, and the issue is being tracked by
   <A HREF="http://bugs.apache.org/index/full/2312">problem report #2312</A>.
   </P>
   <HR>
 </LI>

 <LI><A NAME="redhat">
      <STRONG>I'm using RedHat Linux and I have problems with httpd
      dying randomly or not restarting properly</STRONG>
     </A>

  <P>
  RedHat Linux versions 4.x (and possibly earlier) RPMs contain
  various nasty scripts which do not stop or restart Apache properly.
  These can affect you even if you're not running the RedHat supplied
  RPMs.
  </P>
  <P>
  If you're using the default install then you're probably running
  Apache 1.1.3, which is outdated.  From RedHat's ftp site you can
  pick up a more recent RPM for Apache 1.2.x.  This will solve one of
  the problems.
  </P>
  <P>
  If you're using a custom built Apache rather than the RedHat RPMs
  then you should <CODE>rpm -e apache</CODE>.  In particular you want
  the mildly broken <CODE>/etc/logrotate.d/apache</CODE> script to be
  removed, and you want the broken <CODE>/etc/rc.d/init.d/httpd</CODE>
  (or <CODE>httpd.init</CODE>) script to be removed.  The latter is
  actually fixed by the apache-1.2.5 RPMs but if you're building your
  own Apache then you probably don't want the RedHat files.
  </P>
  <P>
  We can't stress enough how important it is for folks, <EM>especially
  vendors</EM> to follow the <A HREF="../stopping.html">stopping Apache
  directions</A> given in our documentation.  In RedHat's defense,
  the broken scripts were necessary with Apache 1.1.x because the
  Linux support in 1.1.x was very poor, and there were various race
  conditions on all platforms.  None of this should be necessary with
  Apache 1.2 and later.
  </P>
  <HR>
 </LI>

 <LI><A NAME="stopping">
      <STRONG>I upgraded from an Apache version earlier
      than 1.2.0 and suddenly I have problems with Apache dying randomly
      or not restarting properly</STRONG>
     </A>

  <P>
  You should read <A HREF="#redhat">the previous note</A> about
  problems with RedHat installations.  It is entirely likely that your
  installation has start/stop/restart scripts which were built for
  an earlier version of Apache.  Versions earlier than 1.2.0 had
  various race conditions that made it necessary to use
  <CODE>kill -9</CODE> at times to take out all the httpd servers.
  But that should not be necessary any longer.  You should follow
  the <A HREF="../stopping.html">directions on how to stop
  and restart Apache</A>.
  </P>
  <P>As of Apache 1.3 there is a script
  <CODE>src/support/apachectl</CODE> which, after a bit of
  customization, is suitable for starting, stopping, and restarting
  your server.
  </P>
  <HR>
 </LI>

 <LI><A name="setservername">
       <b>When I try to start Apache from a DOS
       window, I get a message like "<samp>Cannot determine host name.
       Use ServerName directive to set it manually.</samp>"  What does
       this mean?</b></A>

  <p>
  It means what it says; the Apache software can't determine the
  hostname of your system.  Edit your <samp>conf\httpd.conf</samp>
  file, look for the string "ServerName", and make sure there's an
  uncommented directive such as
  </p>
  <dl>
   <dd><code>ServerName localhost</code></dd>
  </dl>
  <p>
  or
  </p>
  <dl>
   <dd><code>ServerName www.foo.com</code></dd>
  </dl>
  <p>
  in the file.  Correct it if there one there with wrong information, or
  add one if you don't already have one.
  </p>
  <p>
  Also, make sure that your Windows system has DNS enabled.  See the TCP/IP
  setup component of the Networking or Internet Options control panel.
  </p>
  <p>
  After verifying that DNS is enabled and that you have a valid hostname
  in your <samp>ServerName</samp> directive, try to start the server
  again.
  </p>
  <hr>
 </LI>
 <LI><A name="ws2_32dll">
       <b>When I try to start Apache for Windows, I get a message
	like "<samp>Unable To Locate WS2_32.DLL...</samp>". What should I do?</b></A>
  <p>
  Short answer: You need to install Winsock 2, available from
  <A HREF="http://www.microsoft.com/windows95/downloads/">http://www.microsoft.com/windows95/downloads/</A>
  </p>
  <p>
  Detailed answer: Prior to version 1.3.9, Apache for Windows used Winsock 1.1. Beginning with
  version 1.3.9, Apache began using Winsock 2 features (specifically, WSADuplicateSocket()).
  WS2_32.DLL implements the Winsock 2 API. Winsock 2 ships with Windows NT 4.0 and Windows 98.
  Some of the earlier releases of Windows 95 did not include Winsock 2.
  </p>
  <hr>
 </LI>
 <LI><A name="WSADuplicateSocket">
      <b>Apache for Windows does not start. Error log contains this message:
      "<samp>[crit] (10045) The attempted operation is not supported for
      the type of object referenced: Parent: WSADuplicateSocket failed for
      socket ###</samp>".  What does this mean?</b></A>
  <p>
  We have seen this problem when Apache is run on systems along with
  Virtual Private Networking clients like Aventail Connect. Aventail Connect
  is a Layered Service Provider (LSP) that inserts itself, as a "shim,"
  between the Winsock 2 API and Window's native Winsock 2 implementation.
  The Aventail Connect shim does not implement WSADuplicateSocket, which is
  the cause of the failure.
  </p>
  <p>
  The shim is not unloaded when Aventail Connect is shut down. Once
  observed, the problem persists until the shim is either explicitly
  unloaded or the machine is rebooted. Instructions for temporarily
  removing the Aventail Connect V3.x shim can be found here:
  "<a href="http://support.aventail.com/akb/article00386.html"
   >How to Remove Aventail Connect v3.x from the LSP Order for Testing
    Purposes</a>."
  </p>
  <p>
  Another potential solution (not tested) is to add <code>apache.exe</code>
  to the Aventail "Connect Exclusion List".  See this link for details:
  "<a href="http://support.aventail.com/akb/article00586.html"
   >How to Add an Application to Aventail Connect's Application Exclusion
    List</a>."
  </p>
  <hr>
 </LI>
</OL>
<!--#endif -->
<!--#if expr="$STANDALONE" -->
  <!-- Don't forget to add HR tags at the end of each list item.. -->

<!--#include virtual="footer.html" -->
</BODY>
</HTML>
<!--#endif -->