- 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.
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: “.”
Apache is affected in a similar way by any firewall program that isn’t correctly configured. Assure you exclude your Apache server ports (usually port 80) from the list of ports to block. Refer to your firewall program’s documentation for the how-to.
- This message means that the Web server was unable to start correctly for one reason or another. To find out why, execute the following commands in a DOS window:
c: cd “Program FilesApache GroupApache” apache
(If you don’t get the prompt back, hit Control-C to cause Apache to exit.)
The error you see will probably be one of those preceding this question in the FAQ.
As of Apache 1.3.14, first check the Windows NT Event Log for Application errors using the Windows NT/2000 Event Viewer program. Any errors that occur prior to opening the Apache error log will be stored here, if Apache is run as a Service on NT or 2000. As with any error, also check your Apache error log.
- On a SuSE Linux system, I try and configure access control using basic authentication. Although I follow the example exactly, authentication fails, and an error message “admin: not a valid FDN: ….” is logged.In the SuSE distribution, additional 3rd party authentication modules have been added and activated by default. These modules interfere with the Apache standard modules and cause Basic authentication to fail. Our recommendation is to comment all those modules in /etc/httpd/suse_addmodule.conf and /etc/httpd/suse_loadmodule.conf which are not actually required for running your server.
- Why do I have weird entries in my logs asking for default.ida and cmd.exe?The host requesting pages from your website and creating those entries is a Windows machine running IIS that has been infected by an Internet worm such as Nimda or Code Red. You can safely ignore these error messages as they do not affect Apache. ApacheWeek has an with more information.
- Why am I getting server restart messages periodically, when I did not restart the server?Problem: You are noticing restart messages in your error log, periodically, when you know you did not restart the server yourself:
[Thu Jun 6 04:02:01 2002] [notice] SIGHUP received. Attempting to restart[Thu Jun 6 04:02:02 2002] [notice] Apache configured — resuming normal operations
Check your cron jobs to see when/if your server logs are being rotated. Compare the time of rotation to the error menage time. If they are the same, you can somewhat safely assume that the restart is due to your server logs being rotated.
- Why am I getting “module module-name is not compatible with this version of Apache” messages in my error log?Module Magic Number (MMN) is a constant defined in Apache source that is associated with binary compatibility of modules. It is changed when internal Apache structures, function calls and other significant parts of API change in such a way that binary compatiblity cannot be guaranteed any more. On MMN change, all third party modules have to be at least recompiled, sometimes even slightly changed in order to work with the new version of Apache.
If you’re getting the above error messages, contact the vendor of the module for the new binary, or compile it if you have access to the source code.
E. Configuration Questions
- Why can’t I run more than <n> virtual hosts?You are probably running into resource limitations in your operating system. The most common limitation is the per-process limit on file descriptors, 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 gethostbyname()) which needs file descriptors and doesn’t complain intelligibly when it can’t get them.
Each log file requires a file descriptor, which means that if you are using separate access and error logs for each virtual host, each virtual host needs two file descriptors. Each directive also needs a file descriptor.
Typical values for <n> that we’ve seen are in 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.
As to what you can do about this:
- Reduce the number of directives. If there are no other servers running on the machine on the same port then you normally don’t need any Listen directives at all. By default Apache listens to all addresses on port 80.
- Reduce the number of log files. You can use to log all requests to a single log file while including the name of the virtual host in the log file. You can then write a script to split the logfile into separate files later if necessary. Such a script is provided with the Apache 1.3 distribution in the src/support/split-logfile file.
- Increase the number of file descriptors available to the server (see your system’s documentation on the limit or ulimit commands). For some systems, information on how to do this is available in the performance hints page. There is a specific note for below.For Windows 95, try modifying your C:CONFIG.SYS file to include a line like
Remember that you’ll need to reboot your Windows 95 system in order for the new value to take effect.
- “Don’t do that” – try to run with fewer virtual hosts
- Spread your operation across multiple server processes (using for example, but see the first point) and/or ports.
Since this is an operating-system limitation, there’s not much else available in the way of solutions.
As of 1.2.1 we have made attempts to work around various limitations involving running with many descriptors. More information is available.