2014-11-05 2 views
0

На самом деле это вопрос Some try catch issue with php. Я использую tutorial для создания класса для редактирования crontab. У меня есть файл с классом:Вопросы Php crontab

<?php 
    Class Ssh2_crontab_manager 
    { 
    private $connection; 
    private $path; 
    private $handle; 
    private $cron_file; 
    function __construct($host=NULL, $port=NULL, $username=NULL, $password=NULL) 
    { 
     $path_length = strrpos(__FILE__, "/"); 
     $this->path  = substr(__FILE__, 0, $path_length) . '/'; 
     $this->handle = 'crontab.txt'; 
     $this->cron_file = "{$this->path}{$this->handle}"; 

     try 
     { 
     if ((is_null($host)) || (is_null($port)) || (is_null($username)) || (is_null($password))) 
      throw new Exception("Please specify the host, port, username and password!"); 
     /*$this->connection = @ssh2_connect($host, $port); 
     if (!$this->connection) 
      throw new Exception("The SSH2 connection could not be established."); 

     $authentication = @ssh2_auth_password($this->connection, $username, $password); 
     if (!$authentication) 
      throw new Exception("Could not authenticate '{$username}' using password: '{$password}'.");*/  
     } 
     catch (Exception $e) 
     { 
     echo $e; 
     } 
    }  
    } 
?> 

и файл, где я использую его:

<?php 
    include './lib/Ssh2_crontab_manager.php'; 
    $crontab = new Ssh2_crontab_manager('host', '22', 'user', 'pass'); 
    echo 'WORKS'; 
?> 

И снова говорит теперь работает, но если я раскомментировать строку не не говорит ничего. Теперь я использую код с конца шага, поэтому я не повторяю ошибку, которую я получаю в предыдущем вопросе. libssh2 был установлен, может быть проблема, что он не был успешно установлен? Как я могу проверить это.

Редактировать: из phpinfo() libSSH Версия libssh2/1.4.2
UPDATE

<?php 
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); 
//include './lib/Ssh2_crontab_manager.php'; 
//$crontab = new Ssh2_crontab_manager('host', '22', 'user', 'pass'); 
echo "WORKS"; 
    $connection = ssh2_connect('host','22'); //new variable ...not needed this class 
    /*if (!$connection) 
    { 
     echo "The SSH2 connection could not be established."; 
    } 
    else 
    { 
     echo"OK"; 
    }*/ 
    echo "OK?"; 
    $authentication = @ssh2_auth_password($connection, 'user', 'pass'); 
?> 

Теперь я проверить это так, код все еще заклинивание на ssh2_connect.

+0

поддерживает php ssh2? проверьте его, используя phpinfo() ... – Riad

+0

yep, нашел строку там libSSH Version \t libssh2/1.4.2 –

+0

удалите «@» перед ssh2_connect(), чтобы вы могли видеть, есть ли какое-либо предупреждение. И дайте реальное имя хоста вместо ('host', '22', ...) И используйте error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE); в верхней части скрипта, чтобы увидеть, что проблема показана ... – Riad

ответ

1

Кажется, у вас есть тайм-аут на вашем скрипте. Проверьте соединение ssh PHP BUG here. Постарайтесь установить лимит времени для своего скрипта или отредактировать php.ini для max_execution_time.

Вы можете использовать SSH API, чтобы заставить его работать.

+0

собираюсь проверить ваш ответ позже. –

+1

Я решил использовать API. Но я буду отмечать ваш ответ, потому что вы его посоветовали в своих комментариях. –

+1

Спасибо @SergeyScopin. Я добавил это к ответу. – Riad