从PHP

时间:2017-10-31 00:10:29

标签: php permissions tcl

我有以下文件: 1.使用exec运行rsync的TCL文件。 2.从网站(用户界面)调用的PHP文件,它将参数传递给TCL文件(主要是目录路径)。我从网站上多次测试过,并且参数成功传递给TCL文件(它们在TCL中成功回显)。

问题在于:当我从命令行运行TCL文件(并手动传递参数)时,rsync运行良好。当我从PHP运行TCL文件并传递参数时,我收到一个错误:

rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [sender]

我的直觉告诉我这是一个许可问题 - 但是哪个?我尝试玩chmods和chowns但无济于事。

编辑: 这是代码的片段。简而言之,用户使用用户界面登录到Web门户,其中javascript允许用户选择文件以供稍后远程执行(地下水模型)。 javascript将选定的文件名发布到中间PHP脚本。登录用户名类似于模型所在文件所在的目录名。以下是代码的简短版本。 PHP:

//PHP Code:    
$username = <hardwired at this point>;    
$selRun = $_POST["script"]; //retrieved successfully from javascript
exec("tclsh run.tcl ".$username." ".$selRun." >> files/".$username."/.status.txt 2>&1");

TCL文件很长,但这是关键部分。用户名与引用的目录相同。同样,参数从PHP成功传递给TCL:

# TCL Code:    
    set dirName [lindex $argv 0]
    set fileName [lindex $argv 1]
    set $key <some file>
    set CPString [format {rsync -lptgoDvz  --rsh="sshpass -f %s ssh" /<local path>/%s/*.* <user>@<someIP>:/<remote path>/%s/} $key $dirName $dirName]
    catch {exec >&@stdout bash <<$CPString}

最后,它可能是远程计算机上的权限问题吗?

0 个答案:

没有答案