phantomsjs可以在命令上运行,但不能运行exec()PHP

时间:2017-10-06 13:15:32

标签: php jquery pdf phantomjs

我正在使用Phantomjs并且效果不佳。我正在使用此命令从我的网页生成PDF:

/var/www/html/hor/js/phantomjs /var/www/html/hor/js/_generate.js 1234

效果很好(它没有找到UI-kit js文件,我还没有考虑过这个问题)而且我的PDF文件在我的PDF目录中。但是我的PHP文件没什么。

Command或PHP都使用print_r()提供以下错误代码:

TypeError: 'undefined' is not a valid argument for 'in' (evaluating 
'"default"in t')

http://localhost/js/uikit.min.js:3
http://localhost/js/uikit.min.js:3
http://localhost/js/uikit.min.js:3

(所以在这两种情况下脚本都已启动)

我的PHP脚本:

<?php
    $token = $_GET['token'];
    $simul_mail = $_GET['simulmail'];

    $cmd = ' /var/www/html/hor/js/phantomjs';
    $cmd.= ' /var/www/html/hor/js/_generate.js';
    $cmd.= ' '.$token;

    if(isset($_GET['simulmail'])&&isset($_GET['token'])){
        exec($cmd, $output);
    }   
    print_r( $output );
?>

我的_generate.js文件由phantomJS执行:

fs = require('fs');
system = require('system');
token = system.args[1];

if(token!=null && token!=""){

    fs.changeWorkingDirectory('/var/www/html/hor/pdf/');

    var page = new WebPage();
    var pagename = "PDF_"+token+".pdf";

    page.open('http://localhost/_template-mail.php?v='+token, function (status) {
        page.render(pagename);
        phantom.exit();
    });

}
else{
    phantom.exit();
}

我该怎么办?

1 个答案:

答案 0 :(得分:1)

对于那些有同样问题的人来说,这是一个关于权利的问题。

Apache没有权限在我的PDF文件夹中写入。 具有exec()的PhantomJS使用正在使用Apache权限的PHP权限。

如果Apache是​​该文件夹的所有者,则效果很好!

--> sudo chown <your username>:<your usergroup> -R <path to>/folder
sudo chown apache -R /var/www/html/hor/pdf