wget用PHP执行时不起作用

时间:2018-11-21 14:23:13

标签: php bash wget

我有这个小的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

正在下载文件,但是当我在终端中执行文件时,文件已成功下载。我正在终端中运行

  

bash /var/www/html/newpdftoebook.bash 2569   “ http://kmmc.in/wp-content/uploads/2014/01/lesson2.pdf

我做错了,顺便说一句,这段代码在此之前运行良好,但是我安装了新的Ubuntu 18机器并将代码移到那里,从那时起代码就不再起作用了。我也已经在机器上安装了wget,因为我已经对其进行了测试,并且它可以从终端运行。

1 个答案:

答案 0 :(得分:0)

感谢Mike Q,我弄清楚了为什么wget无法正常工作。原来这是一个权限问题。我只需要将文件夹所有者更改为www-data,在我的情况下,该文件夹正在运行apache2服务器并执行php脚本,因为该文件夹是root用户的所有者。要找出哪个用户正在运行apache2服务(99%是www-data),您可以检查此link或仅在php中执行此脚本

echo shell_exec('whoami');

之后,只需转到主文件夹,然后在终端中使用此命令更改权限即可

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