41

我正在使用 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 存在,所以我不知道如何修复它。

任何帮助将不胜感激

4

14 回答 14

86

只需从 shell(XAMPP 控制面板中的 shell)运行 setup_xampp.bat,路径应该为 Windows 的 XAMPP 便携式版本自动设置。它对我有用。

于 2014-05-15T08:54:48.023 回答
27

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

转到 ServerRoot= ".." 行并将值更改为 apache 所在的路径,例如 "C:\Program Files\Apache24"

于 2015-05-07T08:19:39.087 回答
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,都是相对的,它们是相对于设置的值的ServerRoot。在(ctrl-F for )ServerRoot的顶部定义。httpd.confServerRoot "

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

但它也可以相对于工作目录(cf.)相对设置。如果工作目录是 Apachebin文件夹,那么在你的httpd.conf:

ServerRoot ../

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

ServerRoot .

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

ServerRoot Apache

对于 apache 服务,工作目录C:\Windows\System32,所以使用这个:

ServerRoot ../../Apache
于 2016-04-11T17:07:05.987 回答
4

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

Define SRVROOT "C:\Apache24"   
ServerRoot "${SRVROOT}"
于 2018-04-09T19:17:08.780 回答
2

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

例子:

  • /etc/apache2/apache2对于 Linux
  • "C:\Program Files\Apache24"适用于 Windows
于 2017-03-20T11:28:12.517 回答
1

我认为 ServerRoot 需要是绝对的。使用类似“/apache/docroot”的东西

于 2013-01-27T18:29:46.260 回答
1

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

于 2013-07-26T08:24:08.713 回答
1

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

于 2013-08-29T15:26:43.467 回答
1
  1. 导航到你的XAMPP目录,你会找到一个名为apache的文件夹,打开它,然后复制它的路径,我的路径是“ D:\Hacking Tools 2\Programs\XAMPP V2\apache
  2. 使用任何文本编辑器打开apache\conf\httpd.conf
  3. 向下滚动直到第 30-40 行
  4. 你会发现这样的代码:ServerRoot "xampp\apache"
  5. 现在,将其更改为 apache 目录,正如我在步骤 #1中所说,我的路径是“ D:\Hacking Tools 2\Programs\XAMPP V2\apache ”,所以,我的代码将是ServerRoot "D:\Hacking Tools 2\Programs\XAMPP V2\apache"
  6. 它应该看起来像这样:ServerRoot "D:\XAMPP\apache"
  7. 现在回到XAMPP主目录并运行xampp_start.exe

它对我有用,如果它对你不起作用,只需在打开xampp_start.exe后用错误值注释即可

于 2016-05-02T13:30:46.520 回答
1

运行“setup_xampp.bat/.sh”,最后删除“\”,这样你的ServerRoot应该是“C:.....\apache” NO “C:.....\apache\”

于 2016-05-20T05:22:42.257 回答
1

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

如果您安装了 apache,C:/httpd-2.4.41-o102s-x64-vc14-r2/Apache24
那么模块位于.. 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/"

希望有帮助

于 2019-09-29T04:51:38.387 回答
0

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

ServerRoot "/xampp/apache"

哪个不存在。...

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

于 2018-01-03T11:50:42.003 回答
0

我在 Windows 10 Home 上使用 Xampp 便携版时遇到了同样的问题。我浏览了所有建议,但没有一个奏效。我确实让它与 Windows 防火墙设置一起工作,但我自己出错了。

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

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

我不能说这会奏效,但它对我有用,并且是我在讨论中添加的内容。我也认为这可能只是防火墙不允许其他驱动器号。

于 2019-05-16T22:35:05.400 回答
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>

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

于 2019-10-03T06:46:12.757 回答