我在使用PHP上传文件到远程服务器时遇到了麻烦。当我使用cURL时,我会得到这里描述的错误:SFTP from PHP - undefined constant CURLOPT_PROTOCOLS and CURLPROTO_SFTP?。我也尝试了像这篇文章中建议的那样使用phpseclib:SFTP from within PHP,但是当我尝试phpseclib时,我会出现以下错误:
但是服务器不允许使用scp命令。我没有shell访问权限来创建ssh密钥。
现在,我只能从终端使用sftp并手动上传。但我真的想自动化这个过程,让PHP网站完成所有工作。
关于如何使用PHP进行SFTP上传的教程并不多。这是因为这样做不好吗?如果是这样,我应该做些什么?我要上传到的服务器只允许SFTP连接。
Warning: require_once(Math/BigInteger.php) [function.require-once]: failed to open stream: No such file or directory in /home/john/public_html/test/Net/SSH2.php on line 53
Fatal error: require_once() [function.require]: Failed opening required 'Math/BigInteger.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/john/public_html/test/Net/SSH2.php on line 53
然后我尝试在php中使用系统命令,但没有任何反应:
<?php
echo system('sftp user@ftp.domain.com');
echo system('password');
echo system('put file.csv');
?>
我也尝试过
<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644);
?>
但是我的PHP服务器提示ss2_connect未定义。
我尝试从终端执行以下操作:
scp file.csv user@ftp.remote.com
password
但是服务器不允许使用scp命令。我没有shell访问权限来创建ssh密钥。
现在,我只能从终端使用sftp并手动上传。但我真的想自动化这个过程,让PHP网站完成所有工作。
关于如何使用PHP进行SFTP上传的教程并不多。这是因为这样做不好吗?如果是这样,我应该做些什么?我要上传到的服务器只允许SFTP连接。