在 xampp 伺服器上上傳檔案時執行 sh 腳本

在 xampp 伺服器上上傳檔案時執行 sh 腳本

我正在製作一個應用程序,需要在我的XAMPP 伺服器上新上傳的文件上運行.sh 腳本(目錄:/opt/lampp/htdocs/audio_server/uploads),該應用程式只是將其從一個目錄移動到另一個目錄。以下是我調用該檔案的 PHP 程式碼:

    <?php
     print_r($_FILES);
     $target_path = "uploads/";

     $target_path = $target_path . basename( $_FILES['audio_name']                                          ['name']); 

      if(move_uploaded_file($_FILES['audio_name']['tmp_name'], $target_path))
     {
         echo "The file ".  basename( $_FILES['audio_name']['name'])." has been uploaded";
         chmod ("uploads/".basename( $_FILES['audio_name']['name']), 0777);
     }
     else
     {
         echo "There was an error uploading the file, please try again!";
         echo "filename: " .  basename( $_FILES['audio_name']['name']);
         echo "target_path: " .$target_path;
     }
     echo shell_exec("/opt/lampp/htdocs/audio_server/uploads/dirChangeScript.sh 2>&1");

     ?>

我的 dirChangeScript.sh 檔案如下:

    latest_file=$(ls -t | head -n 1)
    cp -p "$latest_file" /opt/lampp/htdocs/audio_server/converted

執行上述腳本時出現錯誤「省略目錄‘uploads’」。

聽起來很奇怪的問題是,每當 dirChangeScript 腳本從 PHP 檔案運行時,都不會觀察到任何效果,即最新檔案不會複製到指定資料夾。

但是,當我透過終端執行腳本時,正確的檔案(最新的檔案)將複製到目標目錄。

我也嘗試了以下聲明:

    cp -r "$latest_file" /opt/lampp/htdocs/audio_server/converted

但在這種情況下,整個上傳目錄及其所有檔案都會複製到轉換後的資料夾中。

相關內容