Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache~为相对路径配置服务器根目录_Apache_Logging_Path_Relative Path - Fatal编程技术网

Apache~为相对路径配置服务器根目录

Apache~为相对路径配置服务器根目录,apache,logging,path,relative-path,Apache,Logging,Path,Relative Path,当我尝试使用相对路径时,Apache服务器服务找不到模块文件,这使我遇到了麻烦 问题的实质是,我的项目有一个Apache服务子文件夹,并且无论用户决定在哪里安装程序,Apache服务都需要能够从中运行 在项目中可以找到Apache文件的文件如下: apacheroot:[APPDIR]/Apache2.4 服务文件(xxx.exe):[APPDIR]/Apache2.4/bin 现在,如何在httpd.conf中配置ServerRoot以识别正确的根 我当前的设置是: ServerRoot

当我尝试使用相对路径时,Apache服务器服务找不到模块文件,这使我遇到了麻烦

问题的实质是,我的项目有一个Apache服务子文件夹,并且无论用户决定在哪里安装程序,Apache服务都需要能够从中运行

在项目中可以找到Apache文件的文件如下:

  • apacheroot:[APPDIR]/Apache2.4
  • 服务文件(xxx.exe):[APPDIR]/Apache2.4/bin
现在,如何在httpd.conf中配置ServerRoot以识别正确的根

我当前的设置是:

 ServerRoot ".."
当直接运行xxx.exe时,这可以正常工作。但是,它在尝试将其作为服务安装时失败。我假设这是因为该服务不直接运行xxx.exe,而是从另一个目录执行它,所以ServerRoot“.”自然不再工作。这在应用程序日志中产生的错误消息为:

 >>> xxx.exe: Syntax error on line 81 of C:/Release Static/Apache2.4/conf/httpd.conf: Cannot load modules/mod_access_compat.so into server: The specified module could not be found.     .
我解决这个问题的第一个方法是尝试记录Apache查找文件的确切路径。为此,我尝试让Apache在错误日志中记录一些东西,方法是在导致错误的行之前的httpd.conf中写入LogMessage指令。然而,我甚至无法记录像测试消息这样简单的内容。我尝试使用的代码是:

 LoadModule log_config_module "C:/Release Static/Apache2.4/modules/mod_log_config.so"
 LoadModule log_debug_module "C:/Release Static/Apache2.4/modules/mod_log_debug.so"
 ErrorLog "C:/Release Static/Apache2.4/logs/error.log"
 LogLevel debug rewrite:trace8
 LogMessage "Test"
这显然是有效的,因为只有在稍后尝试加载具有相对路径的模块时,错误才会继续发生。但是,它也没有在error.log中记录“Test”,因此我显然还遗漏了一些东西


如果我有这么多工作要做,我的下一步将是尝试找出一种方法,让Apache返回它尝试使用的ServerRoot目录的绝对路径,然后相应地修改该值,直到找到一个相对路径始终指向安装目录的解决方案。

好的,经过大量的尝试和错误,我发现了一种有效的配置:

将ServerRoot配置为使用相对路径的一种方法是根本不设置ServerRoot

这显然会导致Apache将服务器根默认为启动服务器文件的任何目录的第一个根

例如,我从以下位置启动服务:

D:\Unexpected Folder\Totally Unexpected Folder\NBL\Apache2.4\bin

…它成功地找到了NBL\Apache2.4\modules文件夹中的所有模块,并开始在NBL\Apache2.4\logs文件夹中写入日志文件。

好的,经过大量的尝试和错误,我找到了一个有效的配置:

将ServerRoot配置为使用相对路径的一种方法是根本不设置ServerRoot

这显然会导致Apache将服务器根默认为启动服务器文件的任何目录的第一个根

例如,我从以下位置启动服务:

D:\Unexpected Folder\Totally Unexpected Folder\NBL\Apache2.4\bin
…它成功地找到了NBL\Apache2.4\modules文件夹中的所有模块,并开始在NBL\Apache2.4\logs文件夹中写入日志文件