Я использую Нано Пи Нео с помощью Ubuntu 16.04 (Гостеприимный) рабочий Apache. Я пытаюсь сделать обновление firware, в котором я загружаю zip-файл через веб-интерфейс. Сценарий PHP разархивировал файл, который обновляет корень Apache (/var/www) и копирует папку "сценарии" в корневой каталог пользовательского пи (/home/pi). Я дал владение "/home/pi/scripts" к www-данным, но это все еще дает мне следующую ошибку.
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;
}
Чтобы ответить на мой собственный вопрос, решение состояло в том, чтобы дать разрешения на запись в сценарии каталога, используя
chmod g+rx /home/pi/scripts
. Если это не сработает, вы можете создать ярлык ссылки на папку, используя
ln -s
или создать и Alias
ярлык в файле конфигурации вашего веб-сервера.