Ich erstelle eine Anwendung, die ein .sh-Skript erfordert, das auf einer Datei ausgeführt wird, die neu auf meinen XAMPP-Server hochgeladen wurde (Verzeichnis :/opt/lampp/htdocs/audio_server/uploads), wodurch sie einfach von einem Verzeichnis in ein anderes verschoben wird. Im Folgenden sehen Sie meinen PHP-Code zum Aufrufen der Datei:
<?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");
?>
und meine Datei dirChangeScript.sh sieht wie folgt aus:
latest_file=$(ls -t | head -n 1)
cp -p "$latest_file" /opt/lampp/htdocs/audio_server/converted
Beim Ausführen des obigen Skripts erhalte ich die Fehlermeldung „Verzeichnis ‚Uploads‘ ausgelassen“.
Das Problem, so seltsam es auch klingen mag, besteht darin, dass jedes Mal, wenn das Skript „dirChangeScript“ aus der PHP-Datei ausgeführt wird, kein Effekt beobachtet wird, d. h. die neueste Datei wird nicht in den angegebenen Ordner kopiert.
Aber wenn ich das Skript über das Terminal ausführe, wird die richtige (neueste) Datei in das Zielverzeichnis kopiert.
Außerdem habe ich auch die folgende Anweisung ausprobiert:
cp -r "$latest_file" /opt/lampp/htdocs/audio_server/converted
In diesem Fall wird jedoch das gesamte Upload-Verzeichnis mit allen darin enthaltenen Dateien in den konvertierten Ordner kopiert.