我正在使用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存在,所以我无法弄清楚如何解决它。
任何帮助将不胜感激
答案 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.conf
(ServerRoot "
的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)
'
ServerRoot "xampp\apache"
ServerRoot "D:\Hacking Tools 2\Programs\XAMPP V2\apache"
它对我有用,如果它不起作用,只需在打开 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>
更换笔记本电脑时,我也面临同样的问题。 谢谢