在 xampp 服务器上上传文件时运行 sh 脚本

在 xampp 服务器上上传文件时运行 sh 脚本

我正在制作一个应用程序,它要求在我的 XAMPP 服务器(目录:/opt/lampp/htdocs/audio_server/uploads)上新上传的文件上运行 .sh 脚本,只需将其从一个目录移动到另一个目录即可。以下是我调用该文件的 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

但在这种情况下,整个上传目录及其所有文件都将被复制到转换后的文件夹中。

相关内容