in reply to Executing htpasswd from within web cgi

...bear in mind that when your CGI script runs, the world looks different to your script than when you run it by hand under your own account.

Code that executes as CGI will typically only know a part of the host filesystems, not the entire set of all directories and files. In addition, it will be executed as if were the user nobody in most cases. (Or at least as a user with minimal privilege on the server.)

So you may have to provide the full path to htpasswd when your script is run.

With luck, all you have to do is change this line:

$cmd = "htpasswd -b myusers user3 pass";
to something like this:
$cmd = "/opt/httpd/bin/htpasswd -b myusers user3 pass";

where you supply the accurate pathname to your htpasswd binary.

Hope that helps.

...All the world looks like -well- all the world, when your hammer is Perl.
---v

Replies are listed 'Best First'.
Seeing What nobody Sees
by Wally Hartshorn (Hermit) on Sep 18, 2002 at 21:45 UTC

    Depending on how your Unix box is configured, if you have root access on your box, you can login as nobody like this:

    su - nobody

    (No password needed, since you were root.) By including the dash in the su command, you'll get nobody's environment. (Otherwise you'll inherit root's.) You can then try running the command and see what happens.

    Wally Hartshorn