在我的 php 脚本中,我需要能够通过 sftp 将 csv 文件上传到远程服务器。我遵循了这个问题的公认答案:
我的代码是这样的
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$ch = curl_init();
$localfile = 'export-3.csv';
$fp = fopen($localfile, 'r');
curl_setopt($ch, CURLOPT_URL, 'sftp://user:pass@ftp.remote.com/'.$localfile);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_SFTP);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
curl_exec ($ch);
$error_no = curl_errno($ch);
curl_close ($ch);
if ($error_no == 0) {
$error = 'File uploaded succesfully.';
} else {
$error = 'File upload error.';
}
echo $error.' '.$error_no;
?>
输出是
Notice: Use of undefined constant CURLOPT_PROTOCOLS - assumed 'CURLOPT_PROTOCOLS' in /home/john/public_html/test/test.php on line 9
Notice: Use of undefined constant CURLPROTO_SFTP - assumed 'CURLPROTO_SFTP' in /home/john/public_html/test/test.php on line 9
File upload error.1
我正在使用 curl libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.10 。当我执行 sudo apt-get install php5-curl 时,计算机说我有最新版本。
我做错了什么?我如何通过 sftp 将我的文件从 php 上传到远程服务器?
最佳答案
首先,您安装的 libcurl 版本似乎不够新,无法提供您尝试使用的选项。
然后,也可能是您的 libcurl 在构建时未编译为支持 SFTP。需要构建 libcurl 以使用 libssh2 进行 SCP 和 SFTP 传输。
关于php - 来自 PHP 的 SFTP - 未定义常量 CURLOPT_PROTOCOLS 和 CURLPROTO_SFTP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1766822/