我有一个PHP脚本,该脚本接受传入的POST请求中的数据,将数据下载到文件中,然后运行Shell脚本。 shell脚本中只有一部分被执行---不知道为什么。该请求是
https://knode.work/processLatex.php
其中主体是JSON {data: SOURCE}
,而SOURCE是LaTeX源文本。这是PHP脚本:
<?php
$post_data = $_POST['data'];
if (!empty($post_data)) {
$dir = '/var/www/html/files/';
$file = 'foo';
$filename = $dir.$file.'.tex';
$handle = fopen($filename, "w");
fwrite($handle, $post_data);
fclose($handle);
chdir($dir);
exec("sh texit.sh");
echo("Done!!");
}
?>
这是shell脚本:
/usr/bin/pdflatex foo.tex
/usr/bin/pdfatex foo.tex
rm yuuk.txt
rm *.out *.log *.aux
/usr/bin/pdflatex
行不执行,而其他行则执行。有没有搞错?不是所有的线都相等吗?
((是否存在权限问题?)
下面是./files
目录的列表。我通过以根用户身份运行foo.pdf
来创建pdflatex foo.tex
。
-rw-r--r-- 1 root root 207383 Aug 13 17:31 foo.pdf
-rw-r--r-- 1 www-data www-data 11372 Aug 13 18:35 foo.tex
-rw-r--r-- 1 root root 84 Aug 13 17:40 texit.sh
因此,问题可能出在RiggsFolly的foo.tex
所有权与pdflatex
所有权(下文评论)之间。这是pdflatex
上的涂料:
lrwxrwxrwx 1 root root 6 Aug 21 2017 /usr/bin/pdflatex -> pdftex
此外,我将所有内容都设置为root
,例如
drwxr-xr-x 6 root root 4096 Aug 13 18:36 html
我该怎么办?