Я делаю приложение, которое требует, чтобы сценарий .sh запускался в файле, который был недавно загружен на моем сервере XAMPP (каталог: / opt / lampp / htdocs / audio_server / uploads), который просто перемещает его из одного каталог другому. Следующим является мой 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
Выполняя описанный выше сценарий, я получаю сообщение об ошибке "
Проблема, как это ни странно, заключается в том, что всякий раз, когда скрипт dirChangeScript запускается из файла PHP, эффект не наблюдается, т. е. последний файл не копируется в указанную папку. [ ! d3]
Но когда я запускаю скрипт через терминал, соответствующий файл (последний) копируется в целевой каталог.
Также я попробовал следующее утверждение:
cp -r "$latest_file" /opt/lampp/htdocs/audio_server/converted
Но в этом случае весь каталог загрузок вместе со всеми его файлами копируется внутри конвертируемой папки.