Php exec или shell_exec не работает при выполнении команды lftp

Команда не работает, если запускать из php с переменными. Но если я запускаю его из терминала или из php (exec или shell_exec) без переменных, он работает. Это не работает:

$command = 'lftp -c "open -u'.$user.','.$password.' -p xxx sftp://xx.xx.xx.xx; put -O /folder1 folder2/'.$fileName.';"';
exec($command);

var_dump(shell_exec($command)) -> печать: NULL

Это работает:

$command = 'lftp -c "open -u user,password -p 6710 sftp://xx.xx.xx.xx; put -O /folder1 folder2/file.txt;"';
exec($command);

Спасибо


person mstafkmx    schedule 30.09.2014    source источник
comment
Подобных вопросов много. Я бы рекомендовал поискать. Например: stackoverflow.com/questions/8527817/, stackoverflow.com/questions/6780285/, stackoverflow.com/questions/20107147/ и т. д.   -  person Meetai.com    schedule 30.04.2015


Ответы (1)


Нашел на php.net

http://php.net/manual/fr/ftp.examples-basic.php

используйте ftp_ssl_connect для подключения ftp-сервера ssl и cd/ls/put и т. д. вместо того, чтобы пытаться выполнить командную строку exec / shell_exec

// set up basic connection 
$ftp_server = "example.com"; 
$conn_id = ftp_ssl_connect($ftp_server); 

// login with username and password 
$ftp_user_name = "myuser"; 
$ftp_user_pass = "mypass"; 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
ftp_pasv($conn_id, true); 
// check connection 
if ((!$conn_id) || (!$login_result)) { 
        echo "FTP connection has failed!"; 
        echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
        exit; 
    } else { 
        echo "Connected to $ftp_server, for user $ftp_user_name"; 
    } 

$buff = ftp_rawlist($conn_id, '.'); 
var_dump($buff); 
ftp_close($conn_id);

Спасибо kane dot prajakta из gmail dot com, который написал этот пример.

person Hino    schedule 22.09.2016
comment
Этот ответ не касается вопроса, заданного mstafkmx. - person Richard - Rogue Wave Limited; 02.12.2017