Apache无法启动 - ServerRoot必须是有效的目录,并且无法找到指定的模块

时间:2013-01-27 15:13:11

标签: apache httpd.conf

我正在使用xampp便携式服务器而我在Apache http服务器上遇到了一些问题,它说“ServerRoot必须是一个有效的目录”

命令行输出:

Please close this command only for Shutdown
Apache 2 is starting ...
httpd.exe: Syntax error on line 35 of K:/../../../xampp/apache/conf/httpd.conf: ServerRoot must be a valid directory

Apache could not be started

我检查了xampp / apache / conf / httpd.conf的第35行,它是:

ServerRoot "/xampp/apache"

哪个不存在。我的文件夹是:

K:/../../../xampp/apache/conf     <- where the httpd.conf is
K:/../../../xampp/apache/         <- the server root
K:/../../../xampp/apache/modules  <- where server modules are

如果我改变(第35行)

ServerRoot ".."

它说:

Please close this command only for Shutdown
Apache 2 is starting ...
httpd.exe: Syntax error on line 65 of K:/../../../xampp/apache/conf/httpd.conf: Cannot load modules/mod_access_compat.so into server: Unable to find the specified module

Apache could not be started

我检查了,modules / mod_access_compat.so存在,所以我无法弄清楚如何解决它。

任何帮助将不胜感激

14 个答案:

答案 0 :(得分:49)

只需从shell运行setup_xampp.bat(来自XAMPP控制面板的shell),并且应该为XAMPP for Windows的可移植版本自动设置路径。它对我有用。

答案 1 :(得分:18)

导航到Apache24中的conf direcotry中的httpd.conf文件或您拥有的任何apache文件。

转到ServerRoot =&#34; ..&#34;并将值更改为apache所在的路径,如&#34; C:\ Program Files \ Apache24&#34;

答案 2 :(得分:4)

如果您打开一个编辑器并跳转到错误消息中显示的确切行(在httpd.conf文件中),这就是您所看到的:

#LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule auth_form_module modules/mod_auth_form.so

模块的路径,例如modules/mod_actions.so,都是相对的,并且相对于<{strong> ServerRoot设置的值 ServerRoot的顶部定义了httpd.confServerRoot "的ctrl-F)。

ServerRoot通常是绝对设置的,在帖子中为K:/../../../xampp/apache/

但它也可以相对设置,相对于工作目录(cf.)。如果工作目录是Apache bin文件夹,请在httpd.conf中使用此行:

ServerRoot ../

如果工作目录是Apache文件夹,那么这就足够了:

ServerRoot .

如果工作目录是C:文件夹(Apache文件夹上方的一个文件夹),请使用:

ServerRoot Apache

对于apache服务,工作目录would be C:\Windows\System32,请使用:

ServerRoot ../../Apache

答案 3 :(得分:1)

我认为ServerRoot必须是绝对的。使用类似“/ apache / docroot”

的内容

答案 4 :(得分:1)

如果您使用的是实际版本,则根目录中会出现“setup_xampp.bat / .sh”脚本。 路径必须是绝对路径,但脚本会将所有需要的路径更改为当前位置。

答案 5 :(得分:1)

使用带正斜杠的驱动器号开始(c:/ apache /...).

答案 6 :(得分:1)

  1. 导航到您的 XAMPP 目录,您会找到一个名为 apache 的文件夹,打开它,然后复制其路径,我的路径为& #34; D:\ Hacking Tools 2 \ Programs \ XAMPP V2 \ apache &#34;
  2. 使用任何文本编辑器打开 apache \ conf \ httpd.conf
  3. 向下滚动至第30-40行
  4. 您会找到如下代码:'
  5. 现在,将其更改为apache目录,正如我在 步骤#1 中所述,我的路径是&#34; D:\ Hacking Tools 2 \ Programs \ XAMPP V2 \ apache &#34;,所以,我的代码将是ServerRoot "xampp\apache"
  6. 看起来应该是这样的:ServerRoot "D:\Hacking Tools 2\Programs\XAMPP V2\apache"
  7. 现在返回 XAMPP 主目录并运行 xampp_start.exe
  8. 它对我有用,如果它不起作用,只需在打开 xampp_start.exe

    之后使用错误值进行评论

答案 7 :(得分:1)

运行“setup_xampp.bat / .sh”然后 最后删除“\”,因此您的ServerRoot应该是这样的 “C:..... \ apache” “C:..... \阿帕奇\”

答案 8 :(得分:1)

确保httpd.conf中的ServerRoot正确指向Apache路径。否则,您将看到每个其他模块的此消息。

答案 9 :(得分:1)

将httpd.conf文件中的以下路径更改为您的设置。这将解决问题。

Define SRVROOT "C:\Apache24"   
ServerRoot "${SRVROOT}"

答案 10 :(得分:0)

  

我检查了xampp / apache / conf / httpd.conf的第35行,它是:

     

ServerRoot&#34; / xampp / apache&#34;

     

哪个不存在。 ...

创建目录,或更改包含超文本文档的目录的路径。

答案 11 :(得分:0)

我在Windows 10 Home上的Xampp Portable遇到了同样的问题。我经历了所有建议,但都没有奏效。我确实将它与Windows防火墙设置配合使用,并且出现了我的错误。

我的笔式驱动器在笔记本电脑上标记为Drive E,在台式机上标记为DriveF。一旦我纠正了使用磁盘分区的问题,并将桌面的驱动器号更改为E,将其更改为Windows,则要求访问防火墙,然后单击所有内容。

更正驱动器号的步骤是:  1.按下Windows键并输入 Partition (分区),在顶部应输入“ 创建和格式化硬盘分区”,然后按Enter。  2.在顶部面板中找到要查找的驱动器,然后单击它。  3.右键单击它,然后选择更改驱动器号和路径,单击确定  4.现在尝试启动 xampp控制面板,并启动Apache和Mysql  5.如果您获得Windows防火墙,请单击允许

我不能说这行得通,但这对我有用,这就是我在讨论中添加的内容。我还认为可能只是防火墙不允许其他驱动器号。

答案 12 :(得分:0)

下面解决了。我错误地给了bin / directory /,所以遇到了这个问题:

如果您在C:/httpd-2.4.41-o102s-x64-vc14-r2/Apache24上安装了apache
那么模块就在.. C:/httpd-2.4.41-o102s-x64-vc14-r2/Apache24/modules

So, the file           C:/httpd-2.4.41-o102s-x64-vc14-r2/Apache24/conf/httpd.conf
should have
       Define SRVROOT "C:/httpd-2.4.41-o102s-x64-vc14-r2/Apache24/"

希望有帮助

答案 13 :(得分:0)

用于更改XAMPP的目录。 因此,您必须更改目录以及 ServerRoot“ E:/ xampp / apache”

DocumentRoot "E:/xampp/htdocs"


<Directory "E:/xampp/htdocs">


ScriptAlias /cgi-bin/ "E:/xampp/cgi-bin/"


<Directory "E:/xampp/cgi-bin">
    AllowOverride All
    Options None
    Require all granted
</Directory>

更换笔记本电脑时,我也面临同样的问题。 谢谢