我在使用 PHP 将文件 SFTP 上传到远程服务器时遇到问题。当我使用 cURL 时,我收到此处描述的错误:
来自 PHP 的 SFTP - 未定义的常量 CURLOPT_PROTOCOLS 和 CURLPROTO_SFTP?
我还按照以下建议尝试了 phpseclib:
但是当我尝试 phpseclib 时,我得到了这些错误:
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 命令。我没有创建 ssh 密钥的 shell 访问权限。
我现在能做的就是从终端 sftp 并手动上传。但我真的很想自动化这个,这样一个 PHP 网站就可以做到这一切。
关于如何从 PHP 进行 SFTP 上传的教程并不多。是因为这是一件坏事吗?如果是这样,我该怎么办?我要上传到的服务器只允许 sftp 连接。