2017-11-26 12 views
0

Apache HTTP Server moduleC++Ubuntu 16.04)に次のコードがあります。C + + Apacheモジュールでファイルに書き込む方法は?

std::ofstreamを使用して)ログにデバッグを書きたいのですが、何も表示されません。ログもファイルもありません。

また、以下のような、すでにhttp_log.hにあるApacheが複数のログルーチンを使用しようとしましたが、何も書かれていません。

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

許可を得ることができますか?あなたはapacheサーバーが書き込み権限を持っている別の場所を試しましたか? – miradham

+0

私はISAPIの経験があるだけですが、あなたのアプリケーションが実行するユーザーが前述のディレクトリに書き込む権限を持っている限り、ファイル書き込み機能は完璧に動作するはずです。私はこのデフォルトのユーザーがセキュリティ上の懸念から書き込みアクセス権を持っていないことを期待しています。 –

答えて

0

/var/log/apache/のように、Apacheサーバーの書き込みアクセス権が異なる場所を試しますか?

+0

が 'myfile.open(" //var//log//apache2//textfile_1.txt ")に変更されました;'これも動作しません:( – waas1919