将变量从 PHP 传递到 laravel 5.2 中


Pass variables form PHP to bash in laravel 5.2

我在控制器中有一个函数,我试图在其中传递一个变量形式的PHP来抨击SSH外观。

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"
]);

在这里,我正在尝试将密钥写入文本文件。当我写的时候,我得到的是文件里面的关键。不是预期的测试123。我做错了什么...

你需要将echo key更改为echo '$key,否则shell不会扩展关键变量。

此外,您可以完全摆脱关键变量,并通过仅使用$UNIQKEY来避免一些讨厌的 shell 转义

还有一个问题,即您使用putenv并期望环境变量通过SSH连接。 我不相信环境变量是这样转移的。 相反,只需为 $UNIQKEY 设置一个 PHP 变量,并将其插入您的 shell 脚本中。

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

更新$UNIQKEY,转义 $ 以'$UNIQKEY