いろいろ理由がありましてsshトンネリング機能を使いたいのですが、phpからコマンドを発行すると応答しなくなってしまいます。phpについてはあまり詳しくないのですが、phpからコマンドを呼び出す場合はなにか制約があるのでしょうか?
以下の個所で応答が無くなってしまいます。
apache上でphpを動作させています。もちろんapache起動ユーザで以下のコマンドを実行すると正常に終了し、転送機能は働きます。
ちなみにパスワードが聞かれないようにしています。
apacheを再起動するとプロセスにトンネリングのプロセスが現れます。
system("/usr/bin/ssh -2 -f -N -l apache -L 60000:192.168.1.XXX:5432 192.168.1.YYY
");
どなたかご教授下さい!
No.1ベストアンサー
- 回答日時:
なるほどssh経由でpostgresに接続しようと・・・・。
ところで、sshの起動に成功したとして、終了はどうするの?
あ、いや、成功はしてるんだと思うんスよ。これ(sshの起動とトンネル)。で、応答せんくなるのはsystem()が「sshの終了を待っている」からだ。詳しくは参考URLを参照の事。
ひょっとしたらpopen()でsshの制御ができるかも知れない。PHPのバージョンが4.3.0以上であれば、proc_open()も参照すると良いだろう。
ただ、このphpの出力が終わった後にsshやpg_connect()がどうなってるのか気になるよね。レスポンスもだいぶ悪くなりそうやし。もし私がこの手法を取るなら、デーモンとしてあらかじめsshトンネルを作っとくなぁ・・・・。
結論:トンネルは別口で張っておきましょう。
参考URL:http://jp.php.net/manual/ja/function.system.php
この回答への補足
ご回答ありがとうございます。
参考URLから:
バックグラウンドで実行 したままにしたい場合には、プログラムの出力をファイルまたは他の出 力ストリームにリダイレクトする必要があることにも注意して下さい。
出力を" > /dev/null 2>&1"にしたら動くようになりました。。。
終了については
$ret = system("echo \$!");
とかでプロセスIDをもらって。。killしようかと思ったのですが、取れませんでした。。
今は ps ax | grep usr/bin/ssh | grep 【ポート番号】| grep -v grep | awk '{ print $1 }' | xargs kill -9
で終了させています。うーん。無理やりだ。。
>結論:トンネルは別口で張っておきましょう。
トンネルは必要なときだけ張りたいんですよねぇ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- UNIX・Linux ubuntuに外部侵入できるか 2 2022/04/09 12:48
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- UNIX・Linux リナックスのリモート接続の際に使う sshコマンドについて 1 2022/11/21 19:46
- オープンソース AWSドメイン名でApacheテスト・ページを表示させる方法を教えて下さい。 1 2023/04/26 15:59
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- UNIX・Linux cronでシェルスクリプト実行時のkubactlコマンドが機能しない対処法。 2 2022/08/03 18:58
- PHP EC-CUBEをeclipseからコンパイル実行したいです 1 2023/02/09 21:58
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- PHP バージョン情報の取得方法について 1 2023/03/15 11:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パス区切り文字(¥と/)
-
phpinfo で MySQL のバージョン...
-
サーバーマネージャーが消えた
-
Notesが使えない
-
マイクラ統合版Windows7できま...
-
他人のアドレスでメールってで...
-
ワイモバイルあんしんフィルター
-
FTPサーバーへのアップロードの...
-
winscpのエラー
-
サーバーってどこにあるの?
-
Excelシート / ハイパーリンク ...
-
社内ネットワークの1台だけ接...
-
【minecraft】サーバーに接続で...
-
VPNに接続すると、インターネッ...
-
メールサーバーについて詳しい...
-
フェイクニュースとVPN
-
エックスサーバーでhttpd.conf...
-
「OLEサーバーが登録されて...
-
メディアサーバーエラーについて
-
独自ドメインでのNSレコード設定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パス区切り文字(¥と/)
-
phpinfo で MySQL のバージョン...
-
EclipseでSQL動作確認はどうす...
-
MySQLとの相性を教えてください
-
インターネット経由でsubversion
-
cronのようなものをJAVAで作る...
-
PHP-JSON をロリポップレンタル...
-
LAMP構成のAPサーバー
-
PHPで画像ファイルをWEBサーバ...
-
PHP3をWin2kサーバーで
-
PerlでPOSTを受け取るとタイム...
-
apacheをローカル使用時ステー...
-
【minecraft】サーバーに接続で...
-
社内ネットワークの1台だけ接...
-
不具合(教えてgoo)
-
他人のアドレスでメールってで...
-
インターフェースサーバーとは...
-
レンタルサーバーで契約するなら?
-
メールが送信できません
-
サーバーってどこにあるの?
おすすめ情報