wkhtmltopdf — пробелы в URL

При использовании wkhtmltopdf я не могу генерировать изображения, когда URL содержит %20,

Это не проблема при выполнении той же команды локально через командную строку.

Есть ли способ заставить это работать, когда он будет онлайн?

Мой код до сих пор:

<?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);
?>

Это прекрасно работает, если нет %20 в URL.

Страница мне нужна для скриншота имеет иметь %20 в его URL, так что, к сожалению, функция удаления не будет решением.

0

Решение

Вы должны избежать своих аргументов, иначе у вас есть огромная дыра в безопасности в вашем коде:

$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'] должны быть продезинфицированы тоже.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]