1

我正在尝试在 PHP 中使用wkhtmltoimage来抓取屏幕。它不起作用,但我不知道如何调试它。我联系了我的服务器管理员,他们说这exec是允许的。这是我的目录结构:

-index.php
-lib/
  -screenshot.php
  -wkhtmltoimage/
     -wkhtmltoimage-i386
     -wkhtmltoimage-amd64

中的代码screenshot.php如下:

function screenshot($url, $save_path, $zoom = 0.5, $width = 500)
{
    $zoom = escapeshellarg($zoom);
    $width = escapeshellarg($width);
    $url = escapeshellarg($url);
    $save_path = escapeshellarg($shell_path);

    print_r(scandir("lib/wkhtmltoimage"));

    $output = array();

    echo exec("./lib/wkhtmltoimage/wkhtmltoimage-i386 --enable-plugins --zoom $zoom --width $width $url test.png", $output);
    echo exec("lib/wkhtmltoimage/wkhtmltoimage-i386 --enable-plugins --zoom $zoom --width $width $url test.png", $output);
    echo exec("./wkhtmltoimage/wkhtmltoimage-i386 --enable-plugins --zoom $zoom --width $width $url test.png", $output);
    echo exec("wkhtmltoimage/wkhtmltoimage-i386 --enable-plugins --zoom $zoom --width $width $url test.png", $output);
    echo exec("./lib/wkhtmltoimage/wkhtmltoimage-amd64 --enable-plugins --zoom $zoom --width $width $url test.png", $output);
    echo exec("lib/wkhtmltoimage/wkhtmltoimage-amd64 --enable-plugins --zoom $zoom --width $width $url test.png", $output);
    echo exec("./wkhtmltoimage/wkhtmltoimage-amd64 --enable-plugins --zoom $zoom --width $width $url test.png", $output);
    echo exec("wkhtmltoimage/wkhtmltoimage-amd64 --enable-plugins --zoom $zoom --width $width $url test.png", $output);

    print_r($output);
    die();
}

index.php 调用 url "http://www.nasa.gov/" 上的函数截图。

这是我得到的输出:

Array
(
    [0] => .
    [1] => ..
    [2] => wkhtmltoimage-amd64
    [3] => wkhtmltoimage-i386
)
Array
(
)

显然,我什至不确定错误来自哪里。可能是路径错误,或者输入错误,但我不知道如何获得这些因素的任何输出。甚至该函数似乎也没有通过我的数组返回任何输出行。

我该如何调试呢?我从哪里开始?是否有用于检查目录或文件执行的 PHP 函数?

4

1 回答 1

3

愚蠢的错误,我不得不使用根路径。(例如/home/...

有没有人觉得 Web 开发中有一半的时间浪费在解决路径问题上?嗯。

于 2011-06-20T03:14:33.093 回答