Я новичок в PHP и phpseclib implementation of SSH.PHP скрипт зависает после команды exec
У меня есть следующий код:
$ssh = new Net_SSH2($_SESSION['targetAddress']);
if (!$ssh->login(SSH_USER, SSH_PASSWORD)) {
exit('Login Failed');
}
$ssh->setTimeout(400);
$a = 0;
while(isset($file[$a])) {
$ssh->exec('cd '.$_SESSION['path'].'; find -L '.$file[$a].' > /tmp/ligacoes; for i in `cat /tmp/ligacoes`; do cp $i /var/tmp/; done');
$a++;
}
То, что я пытаюсь сделать здесь, чтобы скопировать файлы, выбранные пользователем на удаленном сервере в новый каталог на том же сервере. При выполнении сценария он успешно находит и копирует первый файл в новый каталог, но после этого сценарий просто останавливается. Даже если пользователь выбирает только один элемент, скрипт зависает и не продолжается. Он еще не прирастает $a
Любые мысли о том, что может произойти?
UPDATE:
Я побежал команду непосредственно на сервере, и она прекрасно работает. Я предполагаю, что проблема ограничена $ssh->exec();
UPDATE 2:
Я изменил мой $ssh->exec('cd '.$_SESSION['path'].'; find -L '.$file[$a].' > /tmp/ligacoes; for i in 'cat /tmp/ligacoes'; do cp $i /var/tmp/; done');
к $ssh->exec('cd '.$_SESSION['path'].'; cp '.$file[$a].' /var/tmp;');
и решить часть проблемы. Теперь я могу скопировать один выбранный файл в новый каталог, и скрипт не зависает. Проблема сохраняется, когда выбраны два или более файлов.
[Эффективно просто посмотреть на выход] (http://phpseclib.sourceforge.net/documentation/net.html) '$ ssh-> getLastError()' (который возвращает строку) и '$ ssh-> getErrors() '(который возвращает массив). Опубликуйте этот вывод, если он есть, в вашем вопросе. – WEBjuju
Это можно сделать, используя PHP с меньшим количеством ресурсов. См. Http://stackoverflow.com/questions/19139434/php-move-a-file-into-a-different-folder-on-the-server#19139524 – Kitson88
@WEBjuju Нет выхода ошибки. Использование '$ ssh-> getLog();' единственный доступный мне журнал - это соединение успешно. –