[PHP-users 34574] Re: php(コマンドライン版でない!)からrsyncでサイトを同期させる方法

kato @ officeants.net kato @ officeants.net
2009年 5月 15日 (金) 03:03:40 JST


大家さま
かめおやじさま
貴重な情報を有り難うございます。
加藤です。

僕の方で、実験や調べておりまして、お返事遅くなりまして申し訳ありません。

なるほど、、
proc_open()関数でかなり自由度の高い操作が、、といったのを多々目にしたのです
が、お二人のご意見や、私のproc_open関数を使ったログインの実験からもちょっと
難しいのかもしれませんね、、、

>> 大家さま

> 解決策についてですが残念ながら試してないので何とも
> いえないのですが・・例えば私ならシェルスクリプトに
> コマンドを書いて、それを shell_exec とかで実行すると
> いう方法で再チャレンジすると思います。
なるほど、やはり、シェルスクリプトですね。。。その際に、apache権限でrsyncす
る形になってしまうのが。。。
ということで、下記ですね。

> パスワードの入力は・・うーん、使ったことないのですが
> 例えば expect コマンドとかありますが
> http://www.linux.or.jp/JM/html/expect/man1/expect.1.html
> こういったものを使うとか。。
> (これも同じエラーになっちゃいますかね??)
expectコマンドですね、、
こちらはサーバーに入ってないためちょっと


>> かめおやじさま
> rsync を使用したいとの事ですが、suしなくても使用できるのではないかと
> 予想しております。(テストはしていないので、ご勘弁を・・・。)
> 方法としては、sudo を使うことで可能ではないかと考えます。
> phpからの使用イメージとしては、
>  $outarray = array();
>  exec("sudo /usr/bin/rsync ?????????",$outarray,$ret_value);
>  みたいな感じではないでしょうか。
>  (exec の使用方法は、phpのマニュアルをご参照下さい)
>  (rsync の使用方法は、linuxのマニュアルをご参照下さい)
>  sudo に関しては、ネットで検索すると、各種情報が出てくるとは思うのですが、
>  sudo の設定ファイル(/etc の配下にsudo又はsudoersのファイルであると思い
>  ます)の中に、
>    Defaults    requiretty
>  の行が有りますので、この行をコメントアウトして下さい。
>  (デフォルトでは、ttyなしが許されておりません)
>  この行をコメントアウトする事により、ttyなしでも、特権ユーザになれるよう
> になります。
>  設定ファイルに
>  apache ALL=NOPASSWD:  /usr/bin/rsync
>  を追加します。
>  そうする事で、apache より、パスワードなしで rsyncを利用できる環境が出来
>  るのではないかと考えます。
>  (せってによりパスワードあり等もできますが、sudoの使用方法をお調べ下さい)
>  sudo の設定によっては、スクリプトから、特権ユーザにパスワードなしで
>  なれる環境を作り出すことが可能になりますので、サーバのセキュリティ
>  等々は、自己責任で判断して頂きますようお願いいたします。
sodoの設定で、パスワードは聞かれなくなりました。
ただし、、、
うまく
エラー: 
Host key verification failed.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(463) [sender=2.6.8]

やはり、コマンドラインから試してみると、rsync 自体のサーバー側からのパスワー
ドが、求められたので、
--password-file=/home/aaa/パスワード.txt  オプションを使って、rsyncでサー
バーからのパスワードを聞かれないようにしたのですが、やはりそこで引っかかって
いるようです。

・・・トータル的に、やはり、大家さんの言われるように、シェルスクリプトで作成
するしかないのですかね。。
(本当は、PHPプログラムの中だけで、処理できれば良いのですが、、、)

ちょっと私の方で、作業+悩んでみてメール投稿させていただきます。
取り急ぎのお礼まで、、、
どうぞ、よろしくお願いいたします。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 加藤




PHP-users メーリングリストの案内