Wget его не работает при выполнении с PHP - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть этот маленький php-код

$command = 'bash newpdftoebook.bash ' . $_POST['BookID'] . ' "' . $_POST['pdffile'] . '"';
$descriptorspec = array(
    // stdin is a pipe that the child will read from
    0 => array("pipe", "r"),
    // stdout is a pipe that the child will write to
    1 => array("pipe", "w"),
    // stderr is a pipe that the child will write to 
    2 => array("pipe", "w")
);
flush();
$process = proc_open($command, $descriptorspec, $pipes, realpath('./'), array());

И это мой bash-файл

dirhome=/var/www/html/
dirprocessing=$dirhome"processing/"
if [ ! -d "$dirprocessing" ]; then
  echo -e "Error: there is no folder 'processing'"
fi

pdffile=$dirprocessing"action-"$1".pdf"
if [ ! -f "$pdffile" ]; then 
  #clear dirftp
  rmdir=$dirprocessing"*"
  rm -R $rmdir
  #copy from google drive to local ubuntu server *.pdf 
  wget -O $dirprocessing"action-$1.pdf" "$2"
fi

Это не загрузка файла, но когда я выполняюэто в терминале файл успешно загружен.Я использую это в моем терминалеДо этого все работало нормально, но я установил новую машину Ubuntu 18. и переместил туда код, и с тех пор код больше не работает. Также я установил wget на машину, так как я тестировал ее, и она работает с терминала.

1 Ответ

0 голосов
/ 11 декабря 2018

Благодаря Майку Я выяснил, почему не работает wget.Оказалось, это была проблема с разрешением.Мне просто нужно было изменить владельца папки на www-data, который в моем случае выполнял сервер apache2 и выполнял скрипт php, потому что эта папка была владельцем от пользователя root.Чтобы узнать, какой пользователь запускает службу apache2 (в 99% случаев это www-данные), вы можете проверить эту ссылку или просто выполнить этот скрипт в php

echo shell_exec('whoami');

после этого просто перейдитев основную папку и просто поменяйте права этой командой в терминале

$ sudo chown -R www-data:www-data [folder-name]
...