在Windows上查找Apache服务器的路径

l7mqbcuq  于 2023-05-07  发布在  Apache
关注(0)|答案(4)|浏览(270)

对于我正在编写的Windows脚本,我需要检测机器是否安装了Apache 2.2,并找到应用程序路径。
我想到的一个解决方案是wget http://localhost:8080/server-info并解析根目录和配置文件。如果服务器不使用端口8080,则此操作将失败
另一个选择是调用“sc qc Apache2.2”并解析返回的字符串。如果服务器未作为服务安装,或使用不同的名称,则此操作将失败。
有更好的办法吗?

8qgya5xd

8qgya5xd1#

如果他们没有使用安装程序安装它,就没有太多的好选择。如果他们使用MSI/installer,您可以检查注册表:

HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Apache\2.2.2\ServerRoot 
HKEY_CURRENT_USER\SOFTWARE\Apache Software Foundation\Apache\2.2.2\ServerRoot

您还可以查看正在运行的进程列表:

WMIC PROCESS get Caption,Commandline,Processid

查找相应的EXE。如果出于某种原因需要端口号,则使用netstat并搜索适当的端口。
另外,当你说“一个windows脚本”时,我假设你正在使用一些现代的和有能力的东西,比如Windows Scripting Host(我的最爱)或PowerShell。甚至不要为批处理文件而烦恼。

nzkunb0c

nzkunb0c2#

我记得,Apache写了一些注册表项。如果你知道如何从脚本中读取它们,那可能会有所帮助。

a5g8bdjr

a5g8bdjr3#

uvdesk
无法在服务器上定位路径。
尝试将index.php放在helpdesk安装的站点URL之后,或者如果您使用apache,请确保启用了mode_rewrite模块,并且在服务器的配置文件中将文档根目录的AllowOverride指令设置为All/FileInfo。[enter code here][1]

pkmbmrz7

pkmbmrz74#

无法在服务器上定位路径。
Web服务器可能没有允许覆盖每个目录的Apache配置的权限。

解决windows问题:

httpd.conf中,目录块的Allow Override需要设置为All,如下所示:

<Directory /home/users/var/www/htdocs>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted

Linux解决问题:

apache2.conf中,目录块的Allow Override需要设置为All,如下所示:

<Directory /home/users/www>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted

另外,需要运行以下命令启用mod rewrite规则

a2enmod rewrite

然后重启Web服务器:

service apache2 restart

参考此解决方案以获得更好的指南:

https://github.com/uvdesk/community-skeleton/issues/143
https://github.com/uvdesk/community-skeleton/issues/155

相关问题