簡體   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