让 php 将文件夹复制到用户的主目录

让 php 将文件夹复制到用户的主目录

我正在使用运行 Apache 的 Ubuntu 16.04(Xenial) 的 Nano Pi Neo。我正在尝试进行固件更新,其中我通过 Web 界面上传了一个 zip 文件。php 脚本解压缩该文件,该文件更新 Apache 的根目录 (/var/www),并将文件夹“scripts”复制到用户 pi 的主目录 (/home/pi)。我已将“/home/pi/scripts”的所有权授予 www-data,但它仍然出现以下错误。

cp: cannot stat '/home/pi/scripts/test document.txt': Permission denied .

我的代码示例在这里

 if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],"/var/www/".$target_dir.$target_file)){
            //echo "The file ". basename($_FILES["fileToUpload"]["name"])." has been uploaded.";
            $f=fopen('PASSWORD_DIR/password.txt','r');
            $line=fgets($f);
            fclose($f);
            $line=str_replace(array("\n","\r"),'',$line);
            exec("unzip -P ".$line." -o /var/www/uploads/ZIPPED_FILE.zip -d /var/www/uploads/",$output,$result);
            if($result==0){
            exec("cp -TRv /var/www/uploads/html/ /var/www/");
            exec("cp -TRv /var/www/uploads/scripts/ /home/pi/scripts");//THIS CAUSES AN ISSUE
            exec("cd /home/pi/scripts && make");
            exec("rm --interactive=never /var/www/uploads/ZIPPED_FILE.zip");
            exec("rm --interactive=never -r /var/www/uploads/html");
            exec("rm --interactive=never -r /var/www/uploads/scripts");
            echo("<script>alert('software has been installed')</script>");
            //echo("<script>window.history.go(-2)</script>");
            //$out=shell_exec("whoami");
            //echo $out;
            }

答案1

为了回答我自己的问题,解决方案是使用以下方式授予目录脚本的写权限

chmod g+rx /home/pi/scripts。如果这不起作用,您可以使用创建指向该文件夹的快捷方式链接

ln -s或者Alias在您的网络服务器的配置文件中创建并保存快捷方式。

相关内容