使用的操作系统
Windows 7 - V 6.1
Apache安装
httpd-2.2.22-win32-x86-no_ssl.msi
我的httpd.conf
AddType application/x-httpd-php .php
LoadModule php5_module "X:/Program Files/PHP/php5apache2_2.dll"
安装的php版本
php-5.3.16-Win32-VC9-x86.msi
我从php_ssh2-0.11.2-5.3-nts-vc9-x86.zip中解压缩了php_ssh2.dll
php_ssh2-0.11.2-5.3-nts-vc9-x86.zip
到
X:\Program Files\PHP\ext\php_ssh2.dll
我的php.ini
extension_dir="X:\Program Files\PHP\ext"
PHPIniDir "X:/Program Files/PHP"
[PHP_SSH2]
extension=php_ssh2.dll
在使用php_ssh2.dll配置php.ini并将文件php_ssh2.dll复制到extension_dir后,Apache已重新启动 - 错误仍然存在
Fatal error: Call to undefined function ssh2_connect() in X:\Program Files\Apache Software Foundation\Apache2.2\htdocs\index.php on line 4
用于测试的代码
<?php
$connection = ssh2_connect("XXX.XXX.XXX.XXX", 22);
if(ssh2_auth_password($connection, "XXXXXX", "XXXXXX"))
printf("CONNECTED");
else
printf("ERROR");
?>
使用phpinfo()的测试在浏览器中完美地显示页面,因为php配置了httpd.conf但参数extension_dir显示为
extension_dir C:\php C:\php
但此参数设置为“X:\ Program Files \ PHP \ ext”
答案 0 :(得分:3)
将相应的.DLL文件启用到PHP使用的php.ini(或适用的单独扩展conf):
extension=ssh2.dll
(如果碰巧在此行前面,请删除; )
我们可以使用windows命令行检查是否已启用PHP的SSH2扩展(这可能需要重启apache):
php -m
这将列出所有已安装的php扩展,你应该在其中看到ssh2。
您现在应该可以使用ssh2_connect()
答案 1 :(得分:1)
在您的ini文件中,如果未加载dll,您会在ssh2.shell, ssh2.exec, ssh2.tunnel, ssh2.scp, ssh2.sftp
下看到Registered PHP Streams
吗? Apache重启可能是?
我还假设你有
PHPIniDir "X:/Program Files/PHP"
<{1>}中的而不是httpd.conf
答案 2 :(得分:1)
肯定会工作。
运行此命令以安装ssh2:
sudo apt-get install libssh2-php
现在运行此命令以检查ssh2是否附加到扩展数组
php -r "print_r(get_loaded_extensions());"
现在代码移动你的文件
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;
}
答案 3 :(得分:0)
这适用于使用Apache 5.3和W32的Wamp
答案 4 :(得分:0)
在php_ssh2-0.11.2-5.3-nts-vc9-x86.zip中你有 2 dll
第一次去这里 X:\ Program Files \ PHP \ ext \ php_ssh2.dll 第二个去那里 X:\ Program Files \ PHP \ libssh2.dll