###前提・実現したいこと
PHPでWEBアプリケーションを作成しています。
ブラウザ上の入力フォームに新しいパスワードを入力し、「更新」ボタンをクリックするとダイジェスト認証のパスワードを新しくする(.htdigestファイルを新しく作り直す)プログラムを作成するのがやりたいことです。
###発生している問題
htdigestコマンドを実行した後、New Passwordの入力を2回求められるのですが、これを自動入力する方法がわかりません。
###試したこと
通常、シェルでhtdigestコマンドを行う場合は次のようになります。
bash
1$ sudo htdigest -c /myspace/www/.htdigest "DigestZone" root # (1) 2Adding password for root in realm DigestZone. # (2) 3New password:new_pass # (3) 4Re-type new password:new_pass # (4)
上記コード中の(1)が手動で打ち込むコマンドになります。
その後、(2)のメッセージが表示されます。
続いて(3)が表示されます。このときに新しいパスワード(new_pass)を打ち込みます。
最後に、(4)が表示され、確認用のパスワードを打ち込めば終了です。
これをPHPで単純にやろうとして以下を試しました。(シェルエスケープしていないのはスルーしてください)
PHP
1$new_pass = $_POST["new_pass"]; # ← POSTで新しいパスワードを受け取ります 2exec("htdigest -c /myspace/www/.htdigest \"DigestZone\" root"); 3exec($new_pass); # New password:を打ち込んだつもり 4exec($new_pass); # Re-type new password:を打ち込んだつもり
これをしても特にエラーが発生せず、パスワードは変わりませんでした。
この他に、パイプライン(|)や";"を試してみましたが、やはりうまくいきませんでした。
このようにパスワードを求められるシェルコマンドをうまくPHPで処理するにはどうすればよいでしょうか?
###補足情報(言語/FW/ツール等のバージョンなど)
PHP 5.6.29
Raspbian 8.0
回答1件
あなたの回答
tips
プレビュー