Estoy creando una aplicación que requiere que se ejecute un script .sh en un archivo que se cargó recientemente en mi servidor XAMPP (directorio:/opt/lampp/htdocs/audio_server/uploads) que simplemente lo mueve de un directorio a otro. . El siguiente es mi código PHP para llamar al archivo:
<?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");
?>
y mi archivo dirChangeScript.sh es el siguiente:
latest_file=$(ls -t | head -n 1)
cp -p "$latest_file" /opt/lampp/htdocs/audio_server/converted
Al ejecutar el script anterior aparece el error "directorio omitido 'cargas'".
El problema, por extraño que parezca, es que cada vez que se ejecuta el script dirChangeScript desde el archivo PHP no se observa ningún efecto, es decir, el archivo más reciente no se copia en la carpeta especificada.
Pero cuando ejecuto el script a través de la terminal, el archivo adecuado (el más reciente) se copia en el directorio de destino.
También probé la siguiente declaración:
cp -r "$latest_file" /opt/lampp/htdocs/audio_server/converted
Pero en este caso, todo el directorio de carga junto con todos sus archivos se copia dentro de la carpeta convertida.