php refusing to find ssh2_connect() function

21,268

Solution 1

On your ini file do you see ssh2.shell, ssh2.exec, ssh2.tunnel, ssh2.scp, ssh2.sftp under Registered PHP Streams if not dll is not loaded. Apache restart may be?

Also I assume you had

PHPIniDir "X:/Program Files/PHP"

in httpd.conf not php.ini

Solution 2

Enable the corresponding .DLL file to the php.ini (or separate extensions conf if applicable) that is used by PHP: extension=ssh2.dll (remove an ; if it happens to be in front of this line)

We can check if the SSH2 extension for PHP has been enabled by using the windows command line(This might need an apache restart): php -m This will list out all the php extensions installed and you should see ssh2 in it.

You should now be able to use ssh2_connect()

Solution 3

Will work for sure.

Run this to install ssh2:

sudo apt-get install libssh2-php

now run this command to check if ssh2 appended to array of extensions

php -r "print_r(get_loaded_extensions());"

now code to move your files

public function movefolder() {



          $connection = ssh2_connect('xxx.xx.xx.xx', 22);

        $res = ssh2_auth_password($connection, 'xxxx', 'xxxx123');


          $res1 = ssh2_scp_send ($connection, '/home/user/public/upgrades/downloaded/abc.tar', '/home/xxx/public/abc.tar', 0644);


           echo $connection . '--' . $res. '--' .$res1;

        die;

    }
Share:
21,268
Flavio Moraesjr
Author by

Flavio Moraesjr

Updated on December 07, 2020

Comments

  • Flavio Moraesjr
    Flavio Moraesjr over 3 years

    Operating System used

    Windows 7 - V 6.1
    

    Apache installed

    httpd-2.2.22-win32-x86-no_ssl.msi
    

    My httpd.conf

    AddType application/x-httpd-php .php
    
    LoadModule php5_module "X:/Program Files/PHP/php5apache2_2.dll"
    

    Version of php installed

    php-5.3.16-Win32-VC9-x86.msi
    

    I copied the php_ssh2.dll from php_ssh2-0.11.2-5.3-nts-vc9-x86.zip uncompressed

    php_ssh2-0.11.2-5.3-nts-vc9-x86.zip
    

    to

    X:\Program Files\PHP\ext\php_ssh2.dll
    

    My php.ini

    extension_dir="X:\Program Files\PHP\ext"
    
    PHPIniDir "X:/Program Files/PHP"
    
    [PHP_SSH2]
    extension=php_ssh2.dll
    

    Apache has been restarted after configuring php.ini with php_ssh2.dll and after copying the file php_ssh2.dll to extension_dir - error persists

    Fatal error: Call to undefined function ssh2_connect() in X:\Program Files\Apache Software Foundation\Apache2.2\htdocs\index.php on line 4
    

    code used to test

    <?php
    $connection = ssh2_connect("XXX.XXX.XXX.XXX", 22);
    
    if(ssh2_auth_password($connection, "XXXXXX", "XXXXXX"))
      printf("CONNECTED");
    else
      printf("ERROR");
    ?>
    

    A test with phpinfo() displays the page perfectly in the browser because php was configured with the httpd.conf but the parameter extension_dir appears as

    extension_dir C:\php C:\php
    

    but this parameter was set to "X:\Program Files\PHP\ext"