Estou criando um aplicativo que requer que um script .sh seja executado em um arquivo que foi carregado recentemente em meu servidor XAMPP (diretório:/opt/lampp/htdocs/audio_server/uploads) que simplesmente o move de um diretório para outro . A seguir está meu código PHP para chamar o arquivo:
<?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");
?>
e meu arquivo dirChangeScript.sh é o seguinte:
latest_file=$(ls -t | head -n 1)
cp -p "$latest_file" /opt/lampp/htdocs/audio_server/converted
Ao executar o script acima, recebo o erro "diretório omitido 'uploads'".
O problema, por mais estranho que possa parecer, é que sempre que o script dirChangeScript é executado a partir do arquivo PHP, nenhum efeito é observado, ou seja, o arquivo mais recente não é copiado para a pasta especificada.
Mas quando executo o script através do terminal, o arquivo apropriado (o mais recente) é copiado para o diretório de destino.
Também tentei a seguinte declaração:
cp -r "$latest_file" /opt/lampp/htdocs/audio_server/converted
Mas neste caso todo o diretório de uploads junto com todos os seus arquivos são copiados dentro da pasta convertida.