상대 경로를 사용하려고 할 때 아파치 서버 서비스가 모듈 파일을 찾지 못하는 문제가 있습니다.Apache ~ 상대 경로에 대한 서버 루트 구성
문제의 핵심은 내 프로젝트에 Apache 서비스 하위 폴더가 있고, Apache 서비스가 사용자가 프로그램을 설치하기로 결정한 위치와 상관없이 실행할 수 있어야한다는 것입니다. 다음과 같이 아파치 파일이 프로젝트에서 찾을 수 있습니다
파일은 다음과 같습니다
- 아파치 루트 : [APPDIR] /Apache2.4
- 서비스 파일 (xxx.exe이며) : APPDIR] /Apache2.4/bin
이제 올바른 root를 인식하도록 httpd.conf의 ServerRoot를 구성 할 수 있습니까?
내 현재 설정은 다음과 같습니다 직접 xxx.exe이며 실행시이 잘 작동
ServerRoot ".."
. 그러나 서비스로 설치하려고하면 실패합니다. 서비스가 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. .
내 첫 번째 방법이 아파치가 파일을 찾기 위해 노력하고 정확한 경로를 기록려고 수정. 이를 위해, 오류를 일으킨 행 앞에 httpd.conf에 LogMessage 지시문을 작성하여 Apache 로그에 오류 로그의 내용을 표시하려고했습니다. 그러나 테스트 메시지만큼 간단한 메시지도 기록 할 수 없었습니다. 사용하려고 시도한 코드는 다음과 같습니다.
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 디렉토리의 절대 경로를 Apache로 반환하는 방법을 알아 내려고 시도 할 때까지 다음 값을 수정합니다. 솔루션에서 상대 경로는 항상 설치 디렉토리를 가리 킵니다.
어쨌든, 이것에 대한 도움은 매우 감사하겠습니다. 사전에
감사합니다, 키라 Resari