【问题标题】:SFTP from PHP - undefined constant CURLOPT_PROTOCOLS and CURLPROTO_SFTP?来自 PHP 的 SFTP - 未定义的常量 CURLOPT_PROTOCOLS 和 CURLPROTO_SFTP?
【发布时间】:2009-11-19 21:51:13
【问题描述】:

从我的 php 脚本中,我需要能够通过 sftp 将 csv 文件上传到远程服务器。我遵循了这个问题的公认答案:

SFTP from within PHP

这是我的代码的样子

<?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 上传到远程服务器?

【问题讨论】:

  • 你为什么不能只使用system('sftp to_server....')。检查man sftp
  • 好的,我现在正在尝试。当通过终端时,我必须输入 3 个单独的命令:sftp 到服务器,输入密码,发出 put 命令。那么在 PHP 中,这是否意味着我也执行 3 个单独的系统命令?
  • 类似 system('sftp user@ftp.domain.com');系统('密码');系统('cd public_html'); system('put file.csv');

标签: php curl sftp


【解决方案1】:

首先,您安装的 libcurl 版本似乎不够新,无法提供您尝试使用的选项。

那么,也可能是当你构建它时,你的 libcurl 没有被编译为支持 SFTP。需要构建 libcurl 以使用 libssh2 进行 SCP 和 SFTP 传输。

【讨论】:

    【解决方案2】:

    如果你不能使用 CURL 来做 SFTP,你也许可以使用这个纯 PHP 的 SFTP 实现:

    http://phpseclib.sourceforge.net/

    【讨论】:

      猜你喜欢
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      相关资源
      最近更新 更多