При использовании 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, так что, к сожалению, функция удаления не будет решением.
Вы должны избежать своих аргументов, иначе у вас есть огромная дыра в безопасности в вашем коде:
$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']
должны быть продезинфицированы тоже.
Других решений пока нет …