2016-06-09 2 views
-1

Когда я включаю файлы phpseclib, мой эхо перестает работать. Мне было сложно установить phpseclib «правильный», поэтому я размещаю его в каталоге веб-сайта и в том числе оттуда.phpseclib Включить разрыв эха

Любое руководство относительно того, почему эхо больше не работает, будет оценено по достоинству. У меня тоже нет ошибок.

<?php 


include("http://website.com/folder/phpseclib1.0.2/Net/SSH2.php"); 
set_include_path('http://website.com/folder/phpseclib1.0.2'); 

$ssh = new Net_SSH2('000.000.000.000'); 

if (!$ssh->login('user', 'pass')) { 
     exit('Login Failed'); 
     } 

echo $ssh->exec('cd /home/cpaneluser/public_html/folder'); 
echo $ssh->exec('openssl smime -sign -signer newcertificate.pem -inkey key.pem -nodetach -outform der -in unsigned.txt -out signed.txt'); 
echo $ssh->exec('chmod user:user signed.txt'); 
echo $ssh->read(); 

echo '<pre>'; 
var_dump($ssh); 
echo '</pre>'; 

?> 
+2

Вы не можете установить 'set_include_path' в удаленный URL-адрес, только локальный путь. И обычно вы хотите использовать _append_ для своего пути include. Вам нужно получить phpseclib на вашей локальной машине. – jszobody

+0

Я не знаю, что случилось, но это не «сломанное» эхо! –

+0

Вы делаете '$ ssh-> read()'. Вы должны передать строку, которую вы ожидаете от нее. Если вы этого не сделаете, это просто зависает, пока не истечет время (которое он делает через 10 секунд). Обычно вы должны передать приглашение '$ ssh-> read()', но в вашем случае я не думаю, что вы должны использовать его вообще (см. Мой ответ для получения дополнительной информации). – neubert

ответ

0

Может просто поставить phpseclib в/вар/Библиотека/PHP/phpseclib или что-то, а затем сделать set_include_path(get_include_path() . PATH_SEPARATOR . '/var/lib/php/phpseclib');. Или вы можете установить его с помощью Composer.

Во всяком случае, установка в сторону ...

echo $ssh->exec('cd /home/cpaneluser/public_html/folder'); 
echo $ssh->exec('openssl smime -sign -signer newcertificate.pem -inkey key.pem -nodetach -outform der -in unsigned.txt -out signed.txt'); 
echo $ssh->exec('chmod user:user signed.txt'); 
echo $ssh->read(); 

Это не будет работать. Вы измените все каталоги, но тогда, когда вы запустите команду openssl, вы вернетесь в стартовом каталоге, а не в каталог, в который вы ввели cd'd. См. http://phpseclib.sourceforge.net/ssh/examples.html#chdir для объяснения причин. И $ssh->read() делает только что-либо, если вы используете его с интерактивной оболочкой (например, вы сделали $ssh->write()) или у вас есть enabled a PTY. Моя рекомендация: сделайте это:

$commands = []; 
$command[] = 'cd /home/cpaneluser/public_html/folder'; 
$command[] = 'openssl smime -sign -signer newcertificate.pem -inkey key.pem -nodetach -outform der -in unsigned.txt -out signed.txt'; 
$command[] = 'chmod user:user signed.txt'; 
echo $ssh->exec(implode('; ', $command)); 
Смежные вопросы