2016-04-22 1 views
2

Ich habe eine Funktion in Controller, in dem ich versuche, eine variable PHP-Form übergeben, um in SSH-Fassade bash.Pass Variablen von PHP zu Bash in Laravel 5.2

putenv("UNIQKEY=test123"); 
SSH::into('production')->run([ 
        "if [ -d 'public_html' ]; then 
          cd public_html/ 
          touch laber.txt 
          key=$UNIQKEY 
          echo key >> laber.txt 
         fi" 
]); 

Hier versuche ich einen Schlüssel in die Textdatei zu schreiben. Wenn ich schreibe, was ich bekomme, ist der Schlüssel in der Datei. nicht der erwartete Test123. Was mache ich falsch?

+1

Woher kommt '$ 1'? – edhurtig

+0

@edhurtig Ich habe die Frage aktualisiert. Es ist die Variable UNIQKEY innerhalb putenv –

Antwort

1

Sie müssen echo key zu echo \$key ändern, sonst wird die Shell die Schlüsselvariable nicht erweitern.

Zusätzlich können Sie loswerden der Schlüsselvariable zusammen bekommen und einige böse Schale von nur mit $UNIQKEY

Es ist das andere Problem zu entkommen vermeiden, wo Sie putenv und erwarten, dass die Umgebungsvariable zu tragen durch die SSH-Verbindung verwenden . Ich glaube nicht, dass Env Vars so übertragen werden. Setzen Sie stattdessen einfach eine PHP-Variable für $ UNIQKEY und interpolieren Sie sie in Ihrem Shell-Skript.

$UNIQKEY='test123'; 
SSH::into('production')->run([ 
        "if [ -d 'public_html' ]; then 
          cd public_html/ 
          touch laber.txt 
          echo $UNIQKEY >> laber.txt 
         fi" 
]); 
+0

Whoohooo ... Es hat funktioniert .. Vielen Dank .... –

+0

Sie sind herzlich willkommen! – edhurtig