1

次のコマンドを ssh2_exec 経由で php に渡すのに問題があります。コマンドは次のとおりです。

./prog cat <<EOF
a a a 
b b 
c 
d d 
EOF

問題は最初の行'cat <<EOF'です.phpは「EOF」を特別な単語と見なし、'<<EOF'パスを通常の文字列として渡します。

これに関する解決策はありますか?

アドバイスありがとう


別のモデルの要素を作成しながら、モデルに基づいて要素を作成しますか?

私の質問は明確ではないと確信していますが、それを置く方法がわかりませんでした。

事は:私はTaskモデルを持っています、そしてTaskHistoryモデルです。Task モデルを作成するときに、関連付けられたオブジェクトを自動的に作成したいと考えていTaskHistoryます。たとえばdatetime.now()、値が「example」の Task を に作成したいとします。これを行うと、TaskHistoryオブジェクトが作成されます。

created_on = datetime.now()
last_modification = datetime.now()
old_value = "example"
new_value = "example".

私のモデルのモデルフィールドでそれを行うことはできますTaskか?

私はDjangoにかなり慣れていません。

編集: 2 つのモデルは互いにリンクされていTaskHistoryますtask = Task

4

2 に答える 2

0

私はPHPを知らないので、いくつかの可能な解決策を示します。

  1. EOFを使用しないでください。

    ./prog cat <<WHATEVER
    a a a 
    b b 
    c 
    d d 
    WHATEVER
    
  2. ヒアドキュメントを使用せず、printf からのパイプで標準入力を提供します。

    printf 'a a a \nb b \nc \nd d \n' | ./prog cat
    
  3. 確かにPHPは、stdinの内容を直接または同様のコマンドに提供する方法を提供していますか?ssh2_exec

于 2013-05-28T09:45:38.270 に答える
0
<?php
echo "a <<EOF b";

「 」と表示されますa <<EOF b。PHP が < で「特別な」ことをしていた場合

Idk...おそらくPECLのssh2拡張機能の問題です。または、相手側で使用しているシェルに問題がある可能性があります。どちらの場合でも、純粋な PHP SSH2 実装である phpseclibを使用することをお勧めします。それが修正される PECL 拡張機能の問題である場合、およびシェルの問題である場合は、ログを有効にして、SSH 接続で何が起こっているかを正確に確認できます。

于 2013-05-28T16:37:31.777 に答える