また恥ずかしながらハマったメモ記事です>< シェル以外からexpectすると上手くいかなかった シェル以外、と書いてますが、今回はPHPのexec()でのケースです。おそらくcronでもなんでもシェル以外からの起動だと同じだと思います。 やりたかったこと PHPからシェルスクリプトを起動して、別のサーバに自動でscp転送をかける、ということがしたかったんです。 で、別サーバは認証鍵が必要なので、自動でパスフレーズを入力するためにexpectを使おうかなという感じで。 ※あとで知って残念な気持ちになったんですが、expectでの自動化よりも、パスフレーズ無しの認証鍵で、authrized_keysによるコマンド制限などを行う方がよりよい方法だと知りました…(´・ω・`) 以下のサイトが参考に。 ssh scp sftp の正しい自動実行方法 sshで指定したコマンドしか実行できない公開鍵を作