登録後に自動的にユーザーを作成できるシステムを作成しています。このようにして、ランダムなパスワードを生成し、「mkpasswd」で暗号化し、「useradd」でユーザーを作成する Perl スクリプトを作成しました。その後、ユーザー情報がデータベースに送信されます。
ドキュメントを検索し、php exec 関数を使用して Perl プログラムを呼び出そうとしました。
$command = "/server/backoffice/scripts/usercreation.pl $username";
exec($command, $result);
print_r($result);
usercreation.pl スクリプトはターミナルで正常に動作しますが、不明な理由により、php からは動作せず、何も起こりません。問題が useradd 構文に起因するか、そうでない場合は useradd コマンドに起因することがわかっています。返されるエラー値は 255 <=> 0xff <=> -1 です。
問題は useradd の --password オプションにあると思います。実際、このオプションは mkpasswd を使用しており、シェルまたはそのようなものを妨害する可能性があります:p
Perl プログラムで使用される完全な useradd コマンド:
system("/usr/sbin/useradd $username -m -d $home --expiredate $expire --shell $shell --gid $gid --password $c_password");
編集: pastebin の usercreation.pl ファイル (調査対象の部分に切り詰められています): http://pastebin.com/DgFdndXf
PHPのもの: http://pastebin.com/pQhADNzg
使用する Web サーバーは nginx/0.7.65 です。
使用するphpのバージョンはPHP 5.3.3-1です。
uname -a
Linux openco 2.6.35-32-generic #67-Ubuntu SMP Mon Mar 5 19:35:26 UTC 2012 i686 GNU/Linux
全てに感謝!