我正在制作一个应用程序,它要求在我的 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’”。
这个问题听起来可能很奇怪,那就是每当 dirChangeScript 脚本从 PHP 文件运行时都不会观察到任何效果,即最新文件不会被复制到指定的文件夹。
但是当我通过终端执行脚本时,正确的文件(最新的文件)被复制到目标目录。
我也尝试了以下语句:
cp -r "$latest_file" /opt/lampp/htdocs/audio_server/converted
但在这种情况下,整个上传目录及其所有文件都将被复制到转换后的文件夹中。