wkhtmltopdf - URL 中的空格

wkhtmltopdf - Spaces in URL

当 URL 包含 %20.

使用 wkhtmltopdf 时,我无法生成图像

当通过命令行在本地执行相同的命令时,这不是问题。

有什么方法可以让它在联机后正常工作吗?

到目前为止我的代码是:

<?php
$url = $_GET['url'];    // Website URL to Create Image
$name = $_GET['img'];   // Output Image Name
$command = "/usr/local/bin/wkhtmltoimage --no-images --crop-w 580";
$dir_img = "images/";     // Image files will be saved here
$ex_cmd = "$command $url " . $dir_img . $name;
$output = shell_exec($ex_cmd);
?>

除非 URL.

中有 %20,否则这工作正常

我需要截屏的页面 在其 URL 中有 %20,因此不幸的是,删除它的功能不是解决方案。

你必须避开你的论点,否则你的代码中会有一个巨大的安全漏洞:

$url = escapeshellarg($_GET['url']);    // Website URL to Create Image
$name = escapeshellarg($_GET['img']);   // Output Image Name
$command = "/usr/local/bin/wkhtmltoimage --no-images --crop-w 580";
$dir_img = "images/";     // Image files will be saved here
$ex_cmd = "$command $url " . $dir_img . $name;
$output = shell_exec($ex_cmd);

这只是为了帮助您入门,您还必须检查 $_GET['url'] 是 url,而不是 ./config/database.php,并且 $_GET['img'] 也必须被清理。