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' が省略されました」というエラーが発生します。

奇妙に聞こえるかもしれませんが、問題は、PHP ファイルから dirChangeScript スクリプトを実行しても効果が見られないこと、つまり、最新のファイルが指定されたフォルダーにコピーされないことです。

しかし、ターミナルからスクリプトを実行すると、適切なファイル (最新のもの) がターゲット ディレクトリにコピーされます。

また、次のステートメントも試しました:

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

ただし、この場合は、アップロード ディレクトリ全体とそのすべてのファイルが変換されたフォルダー内にコピーされます。

関連情報