我有一个单行程序,可以从HTML文件中生成PDF:
$my_path = "/path/to/phantomjs/and/generate-pdf.js";
$output = shell_exec("cd $my_path && phantomjs generate-pdf.js");
我可以作为root用户,我自己和apache用户(www-data)从shell成功运行此命令。更重要的是,我可以从命令行调用的PHP文件php generate-pdf.php
成功运行同一行代码,并且我能够运行其他shell命令,例如touch test.txt
。 HTTP请求。
为什么在从HTTP请求调用时无法生成PDF?
整个目录结构(包括phantomjs可执行文件和generate-pdf.js)已获得777个权限,safe_mode
和/etc/php5/apache2/php.ini
已禁用/etc/php5/cli/php.ini
,{{ 1}}不包含disable_functions
。
答案 0 :(得分:0)
如果您确定shell_exec()
本身已启用,我认为这是一个$PATH
问题。你应该在给定phantomjs二进制文件的完整路径的情况下执行它:
shell_exec("cd $my_path && /path/to/phantomjs generate-pdf.js");