【问题标题】:shell script with SFTP from PHP来自 PHP 的带有 SFTP 的 shell 脚本
【发布时间】:2016-05-11 08:33:23
【问题描述】:

我在 Linux 中有一个 shell 脚本,它执行 SFTP 来获取一些文件。当我从终端执行它时它工作正常。

我正在尝试从 PHP 调用脚本。它似乎一直工作到echo,然后它什么也没做。

脚本和 PHP 文件在同一个文件夹中。

这是 PHP 代码:

<?php 
$comando = "sh ftpgesdoc.sh";
$result=exec($comando);
echo $result; 
?>

这是shell脚本。当我从网络上执行时,我可以看到echo "ejecutando sftp",但此后没有任何反应。

#!/bin/sh
echo "ejecutando sftp"
folder="/aaa/bbb"
file="xxx.PDF" 
sftp UserXX@nnn.nn.n.nn << EOF
cd $folder
get $file test.pdf
EOF

【问题讨论】:

标签: php linux bash shell


【解决方案1】:

exec 仅返回命令输出的最后一行。如果要捕获整个输出,请使用proc_open。例如,请参阅this answer

【讨论】:

    【解决方案2】:

    你必须给出文件的完整路径

    并使用这个 2>&1 并知道错误

    试试这样的

    $comando = "sh pathTofile/location/ftpgesdoc.sh";
    
    if(exec("$comando  2>&1", $output, $return_var))
    {
        print_r($output);
        echo "<br>";
       print_r($return_var);
    
    }
    

    【讨论】:

    • 谢谢,我尝试使用完整路径,但结果相同 - 回显后没有任何反应。
    • 我又试了一次,我有更多关于错误的信息。看来我需要一些额外的库。再次感谢。 => /usr/bin/ssh: /opt/lampp/lib/libcrypto.so.1.0.0: 找不到版本“OPENSSL_1.0.1”(/usr/bin/ssh 需要)[2] => 不能读取数据包:对等方重置连接)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 2017-09-23
    相关资源
    最近更新 更多