微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将文件保存在 sftp 服务器上的 php

如何解决将文件保存在 sftp 服务器上的 php

我使用Dropzone上传文件时遇到问题,必须保存在sftp服务器上,与服务器的连接正常。

但是 fopen 函数仍然给我一个错误

警告:fopen(ssh2.sftp://Resource id #624/DossierTest/Extranet.png): 无法打开流:操作失败

然而,我测试了例如创建一个文件,不用担心..我不知道该怎么做!

这是我的代码

$conn_id = ssh2_connect($ftp_server,22) or die("Erreur de connexion avec le serveur FTP");
           $login_result = ssh2_auth_password($conn_id,$ftp_user_name,$ftp_user_pass);

      
       if ((!$conn_id) || (!$login_result)) {  // check connection
           // wont ever hit this,b/c of the die call on ftp_login
           $errorMessage= "<span style='color:#FF0000'><h2>FTP connection has Failed! <br />";
           $errorMessage += "Attempted to connect to $ftp_server for user $ftp_user_name</h2></span>";
           exit;
       } else {
           $message = "Connected to $ftp_server,for user $ftp_user_name <br />";
           //echo "Connected to $ftp_server,for user $ftp_user_name <br />";
           $sftp = ssh2_sftp($conn_id);
         
           $stream = fopen("ssh2.sftp://$sftp/DossierTest/$file_name","w");
           $file = file_get_contents($local_path);
           fwrite($stream,$file);
           fclose($stream);`

我正在尝试使用 ssh2_scp_send 但我不知道在“local_file”和“remote_file”中放什么 这是文件名还是文件绝对路径??

我试过: ssh2_scp_send($conn_id,$local_path,"ssh2.sftp://".intval($sftp)."/DossierTest/$file_name"); 我有这个错误: 警告:ssh2_scp_send():创建远程文件失败:(null)

我试过: ssh2_scp_send($conn_id,"/DossierTest/$file_name"); 它也不起作用! 在 locale_path 我有路径 "c:/wamp32/tmp/PHP9356.tmp" ??好吗 ? 我承认我迷路了!!我正在寻找解决方案的 3 天!! 没人帮我?? 我真的很郁闷!

好吧,它在进步,我没有更多错误了! 使用此代码

if ((!$conn_id) || (!$login_result)) {  // check connection
            // wont ever hit this,b/c of the die call on ftp_login
            $errorMessage= "<span style='color:#FF0000'><h2>FTP connection has Failed! <br />";
            $errorMessage += "Attempted to connect to $ftp_server for user $ftp_user_name</h2></span>";
            exit;
        } else {
            $message = "Connected to $ftp_server,for user $ftp_user_name <br />";
            //echo "Connected to $ftp_server,for user $ftp_user_name <br />";
            $sftp = ssh2_sftp($conn_id);

            ssh2_scp_send($conn_id,"/in/$file_name");

另一方面,当我去查看服务器时,发送的文件未找到!!

解决方法

您的 $sftp 变量包含一个 SSH2 SFTP 资源,因此您不能像在调用 fopen 时在代码中那样直接连接它。

根据 PHP documentation,您需要在调用 fopen 时获取 SSH2 SFTP 资源的整数:

fopen("ssh2.sftp://" . intval($sftp) . "/DossierTest/$file_name","w");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。