我有这个小的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,因为我已经对其进行了测试,并且它可以从终端运行。
答案 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]