对于我正在编写的Windows脚本,我需要检测机器是否安装了Apache 2.2,并找到应用程序路径。
我想到的一个解决方案是wget http://localhost:8080/server-info并解析根目录和配置文件。如果服务器不使用端口8080,则此操作将失败
另一个选择是调用“sc qc Apache2.2”并解析返回的字符串。如果服务器未作为服务安装,或使用不同的名称,则此操作将失败。
有更好的办法吗?
对于我正在编写的Windows脚本,我需要检测机器是否安装了Apache 2.2,并找到应用程序路径。
我想到的一个解决方案是wget http://localhost:8080/server-info并解析根目录和配置文件。如果服务器不使用端口8080,则此操作将失败
另一个选择是调用“sc qc Apache2.2”并解析返回的字符串。如果服务器未作为服务安装,或使用不同的名称,则此操作将失败。
有更好的办法吗?
4条答案
按热度按时间8qgya5xd1#
如果他们没有使用安装程序安装它,就没有太多的好选择。如果他们使用MSI/installer,您可以检查注册表:
您还可以查看正在运行的进程列表:
查找相应的EXE。如果出于某种原因需要端口号,则使用netstat并搜索适当的端口。
另外,当你说“一个windows脚本”时,我假设你正在使用一些现代的和有能力的东西,比如Windows Scripting Host(我的最爱)或PowerShell。甚至不要为批处理文件而烦恼。
nzkunb0c2#
我记得,Apache写了一些注册表项。如果你知道如何从脚本中读取它们,那可能会有所帮助。
a5g8bdjr3#
uvdesk
无法在服务器上定位路径。
尝试将index.php放在helpdesk安装的站点URL之后,或者如果您使用apache,请确保启用了mode_rewrite模块,并且在服务器的配置文件中将文档根目录的AllowOverride指令设置为All/FileInfo。
[enter code here][1]
pkmbmrz74#
无法在服务器上定位路径。
Web服务器可能没有允许覆盖每个目录的Apache配置的权限。
解决windows问题:
在httpd.conf中,目录块的Allow Override需要设置为All,如下所示:
Linux解决问题:
在apache2.conf中,目录块的Allow Override需要设置为All,如下所示:
另外,需要运行以下命令启用mod rewrite规则:
然后重启Web服务器:
参考此解决方案以获得更好的指南:
https://github.com/uvdesk/community-skeleton/issues/143
https://github.com/uvdesk/community-skeleton/issues/155