【问题标题】:PhantomJS Fails to Render When Called from PHP从 PHP 调用时,PhantomJS 无法呈现
【发布时间】:2014-09-22 10:27:02
【问题描述】:

我有一个从 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 generate-pdf.php 调用的PHP 文件成功运行同一行代码,并且可以从HTTP 请求运行其他shell 命令,例如touch test.txt

为什么从 HTTP 请求调用时无法生成 PDF?

整个目录结构(包括 phantomjs 可执行文件和 generate-pdf.js)已被赋予 777 权限,safe_mode 已从 /etc/php5/apache2/php.ini/etc/php5/cli/php.ini 中禁用,disable_functions 不包括 @987654328 @。

【问题讨论】:

  • 您可以在测试 PHP 脚本中运行相同的设置并预先生成 HTML 吗?我假设您在 generate-pdf.js 中有硬编码的 HTML 文件?因为您没有传递信息...

标签: php shell ubuntu phantomjs vagrant


【解决方案1】:

如果您确定shell_exec() 本身已启用,我猜这是$PATH 问题。您应该在给出 phantomjs 二进制文件的完整路径的情况下执行它:

shell_exec("cd $my_path && /path/to/phantomjs generate-pdf.js");

【讨论】:

  • 嗯。当前命令是cd /vagrant/wp-content/plugins/prices/ && /home/vagrant/local/bin/phantomjs /vagrant/wp-content/plugins/prices/generate-pdf.js,结果相同。此命令适用于 shell。
  • 结果是一个pdf文件保存到/vagrant/wp-content/plugins/prices/
  • ... 我假设执行后不存在?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多