服务器1:php脚本
服务器1将服务器2上bash脚本收到的$mp3file
变量设置为$1
php脚本像这样调用ssh2_exec(减去所有连接信息):
$stream = ssh2_exec($connection, "/root/incoming/test.sh ".escapeshellarg($mp3file)." &> /dev/null &");
服务器2:bash脚本
test.sh(在服务器2上)包含一个简单的curl命令:
curl -o /path/to/downloaded/file/$1 http://remotefilepath.com/$1
这一切都很完美,文件按预期下载。
但是如果我尝试传递多个这样的变量:
$stream = ssh2_exec($connection, "/root/incoming/test.sh ".escapeshellarg($mp3file)." ".escapeshellarg($artwork)." &> /dev/null &");
该文件仅部分下载。
我在这里设置多个变量的方式是错误的,这打破了&> /dev/null &
命令吗?
答案 0 :(得分:0)
好的经过一些搞乱我发现我能让它工作的唯一方法是首先设置转义变量:
$mp3file = escapeshellarg($mp3file);
$artwork = escapeshellarg($artwork);
$title = escapeshellarg($title);
$safeurl = escapeshellarg($safeurl);
然后这样传递它们:
$stream = ssh2_exec($connection, "/root/incoming/test.sh $mp3file $artwork $title $safeurl &> /dev/null &");
我不确定这是唯一(或正确)的方法,但它确实有效。