2017-11-26 12 views
0

다음 코드는 C++ (Ubuntu 16.04)에 Apache HTTP Server module입니다.아파치 모듈에 파일을 쓰는 방법?

로그에 디버그를 쓰고 싶습니다 (std::ofstream 사용).하지만 아무 것도 볼 수 없습니다. 로그 또는 파일이 아닙니다.

나는 또한 아래의 것과 같이 http_log.h에 아파치가 이미 가지고있는 다중 로그 루틴 중 하나를 사용하려고 시도했지만 아무 것도 쓰여지지 않습니다.

Apache module의 파일에 디버그 로그를 기록하려면 어떻게해야합니까?

#include <httpd.h> 
#include <http_log.h> 
#include <http_core.h> 
#include <http_protocol.h> 
#include <http_request.h> 

#include <apr_strings.h> 

#include <iostream> 
#include <fstream> 

void write_something_to_a_file() // <---- DOESN'T WRITE TO FILE! 
{ 
    std::ofstream myfile; 
    myfile.open ("//home//myubuntu//myubuntu//textfile_1.txt"); 
    myfile << "Writing this to a file.\n"; 
    myfile.close(); 
} 

static int myserver_handler(request_rec *r) 
{ 
    write_something_to_a_file(); // <-- DOESN'T WORK :(

    ap_log_pid(p, "//home//myubuntu//myubuntu//textfile_2.txt"); //<-- DOESN'T WORK 

    return OK; 
} 

static void register_hooks(apr_pool_t *pool) 
{ 
    ap_hook_handler(myserver_handler, NULL, NULL, APR_HOOK_LAST); 
} 

module AP_MODULE_DECLARE_DATA myserver_module = 
{ 
    STANDARD20_MODULE_STUFF, 
    NULL, 
    NULL, 
    NULL, 
    NULL, 
    NULL, 
    register_hooks 
}; 
+0

허가 문제 일 수 있습니까? 아파치 서버에 쓰기 권한이있는 다른 위치를 시도 했습니까? – miradham

+0

저는 ISAPI에 대한 경험이 있지만 응용 프로그램을 실행하는 사용자가 언급 된 디렉토리에 쓸 수있는 권한을 가진 한 파일 작성 기능이 완벽하게 작동해야합니다. 이 기본 사용자에게는 보안 문제로 인해 쓰기 권한이 없을 것으로 예상됩니다. –

답변

0

/var/log/apache/과 같이 Apache 서버가 쓰기 권한이있는 다른 위치를 시도해보십시오.

+0

는'myfile.open ("//var//log//apache2//textfile_1.txt");로 변경되며 또한 작동하지 않습니다. – waas1919