I'm working on a PPC build of httpd 2.2.4 on an Intel Mac. I'm
doing this because I need Oracle support built into mod_php; because Oracle has only released PPC libraries, I have to compile PPC-only apps if I want to use them. I have a working httpd/php combo and now I'm trying to add mod_rewrite to the mix. I can get mod_rewrite to work if I totally disable logging at compiletime, but if logging is allowed httpd will not start.

Here is a bit of history: httpd compiles after configuring like this:

    $ CPPFLAGS="-arch ppc" LDFLAGS="-arch ppc" ./configure
    --build=ppc-apple-darwin8.10.2

but it won't start. The error log showed messages like this:

    [emerg] (14)Bad address: Couldn't set permissions on
    cross-process lock; check User and Group directives

The problem is a bad default AcceptMutex setting (sysvsem; pthread also fails; flock, fcntl and posixsem all work fine). Thanks to Vincent Bray to putting me on the track to figuring out that problem.

Building mod_rewrite with apxs like this:

    sudo /usr/local/apache2-ppc/bin/apxs -Wc,"-arch ppc"
    -Wl,"-arch ppc" -i -a -c mod_rewrite.c

works but gives a similar error when trying to start httpd:

    [crit] (14)Bad address: mod_rewrite: Could not set permissions
    on rewrite_log_lock; check User and Group directives

    Configuration Failed

This error comes from a block near line 4048 of mod_rewrite.c. It's in a double-nested ifdef-block:

    #ifndef REWRITELOG_DISABLED
    ...
    #ifdef AP_NEED_SET_MUTEX_PERMS

The second ifdef, defined in defined in os/unix/os.h, is kinda suspicious given the AcceptMutex issue I originally faced. I tried moving the AcceptMutex directive before the "LoadModule rewrite_module modules/mod_rewrite.so" directive, I tried all the different AcceptMutex options, and I tried building mod_rewrite statically into the httpd binary; none work.

Happily, the comments for the REWRITELOG_DISABLED constant (see line 101 of mod_rewrite.c) note that you can totally disable logging at compiletime (compile with -DREWRITELOG_DISABLED), which sidesteps the problem by totally skipping this block. But it doesn't really solve the problem, and it would be kinda nice to have logging available.

Does anybody have any hints on how I might proceed?

Thanks,

zak.


---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: [EMAIL PROTECTED]
  "   from the digest: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to