繁体   English   中英

php如何上传文件到Amazon EC2服务器?

[英]How do I upload files to Amazon EC2 server in php?

我在一个 EC2 实例上安装了 Apache 服务器来提供 Amazon EFS 文件系统中的文件。 然后我将 EFS 安装在 apache root /var/www/html下。 我在此路径下创建了子文件夹。 现在我想使用 php 将文件从我的 web 应用程序上传到该文件夹。

我试过使用 phpseclib/SFTP。 我做的对吗?

            include_once($dir.'vendor/autoload.php');

            $key = PublicKeyLoader::load(file_get_contents($ppkpath));

            $ssh = new SFTP('ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com');
            if (!$ssh->login('ec2-user', $key)) {
                exit('Login Failed');
            }else{
                echo "Logged in"; 
            }
            $file_name = $_FILES['file_path']['name'];
            $file_tmp =$_FILES['file_path']['tmp_name'];
            $uploadPath = "/var/www/html/efsmount/Foldername";
            //if (ssh2_scp_send($ssh, $_FILES["file_path"]["tmp_name"], $uploadPath, 0644)) {
            if ($ssh->put($uploadPath, $_FILES["file_path"]["tmp_name"], SFTP::SOURCE_LOCAL_FILE)) {
                $sftp->chmod(0644, $uploadPath);
                echo "Uploaded";
            } 
            else 
            {
                echo "Upload Failed";     
            }

Output 是: Upload Failed 没有其他错误信息。

我找到了解决方案。

为了将文件从本地计算机上传到 EC2 实例,您需要允许 ec2-user 帐户操作 apache 文档根目录中的文件。

我执行了这些步骤来更改目录权限。 之后我运行我的代码。 它成功上传文件。

我修改后的代码:

            include_once($dir.'vendor/autoload.php');

            $key = PublicKeyLoader::load(file_get_contents($ppkpath));

            $ssh = new SFTP('xx.xxx.xxx.xxx');
            if (!$ssh->login('ec2-user', $key)) {
                exit('Login Failed');
            }else{
                echo "Logged in"; 
            }
            if (!empty($_FILES) && isset($_FILES)) {                
               $file_name = $_FILES['file_path']['name'];
               $file_tmp =$_FILES['file_path']['tmp_name'];
               $uploadPath = "/var/www/html/efsmount/Foldername/";
               $path = $uploadPath.$file_name;
            if ($ssh->put($path, $_FILES["file_path"]["tmp_name"], SFTP::SOURCE_LOCAL_FILE)) {
                echo "Uploaded";
   
            } 
            else 
            {
                echo "Upload Failed";
               
            }
           }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM