我正在尝试执行一个简单的Ghostscript命令来获取PDF页面的数量。以下是PHP cmd:
$pages = 'sudo gs -q -dNODISPLAY -c "(' . $input . ') (r) file runpdfbegin pdfpagecount = quit"';
已尝试exec()、system()、shell_exec()和passthru()-none返回stdout。
对于s&g、 我试过Python:
>>> import os
>>> os.system('sudo gs -q -dNODISPLAY -c "(/Users/me/Downloads/multi-page.pdf) (r) file runpdfbegin pdfpagecount = quit"')
得到32的输出。
主要目标是让它在PHP中工作——我缺少什么?
这是一个未找到可执行文件的函数,PHP没有任何指示。我走了一条迂回的路:
Python脚本:
>>> #!/usr/bin/python
>>> import sys
>>> import os
>>> input_file = sys.argv[1].replace("2>&1", "")
>>> num_pages = os.system('gs -q -dNODISPLAY -c "(' + input_file + ') (r) file runpdfbegin pdfpagecount = quit"')
>>> print num_pages
PHP脚本envoking Python脚本:
$cmd_path = base_path('backend/misc/get_pdf_pages.py');
$pages_cmd = "python -u {$cmd_path} " . escapeshellarg($input) . " 2>&1";
exec($pages_cmd, $ret);
echo $ret[0];
这导致:"sh:gs:找不到命令"
多亏了这个技巧,我把gs改成了/usr/local/bin/gs,它在Python中工作,在PHP中尝试了同样的东西,在PHP上工作。经验教训-使用二进制文件的绝对路径。