curl — сохранить скриншот страницы в папку, используя переполнение стека

Я хочу разработать проект, в котором пользователь должен ввести URL-адрес, а затем он сделает снимок этого приложения и сохранит его в папку.
Я могу сделать снимок экрана, но он не сохраняется в папку. я получаю ошибку:

Notice: Undefined index: extension in C:\xampp\htdocs\curlproject.php on line 20

Warning: fopen(images-folder/Z.): failed to open stream: Permission denied in C:\xampp\htdocs\curlproject.php on line 21

Вот код:

<?php
$websiteURL = $_POST["website"];
$api_response =
file_get_contents("https://www.googleapis.com/pagespeedonline/
v2/runPagespeed?url=$websiteURL&screenshot=true");

$result = json_decode($api_response, true);
//screenshot data
$screenshot = $result['screenshot']['data'];
$screenshot = str_replace(array('_','-'),array('/','+'),$screenshot);
//display screenshot image
echo "<img src=\"data:image/jpeg;base64,".$screenshot."\" />";

$split_image = pathinfo($screenshot);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL , $screenshot);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT
5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C
Safari/525.13");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response= curl_exec ($ch);
curl_close($ch);
$file_name = "images-
folder/".$split_image['filename'].".".$split_image['extension'];
$file = fopen($file_name , 'w') or die("X_x");
fwrite($file, $response);
fclose($file);
?>

0

Решение

Вы можете найти сделать в PHP …

на твоем месте Я бы сделал это через JavaScript

Просто для вашего знания Используйте правильный инструмент для захвата экрана … т.е. phantom.js

вот простой код, чтобы сделать скриншот

  var page = require('webpage').create();
page.open(url, function () {    // your URL
page.render('D:/MySnapShotBox/saveAsSomeNome.png'); // can change location
});
0

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

Прелесть регистрации ошибок в том, что она точно указывает, где искать проблему.

Notice: Undefined index: extension in C:\xampp\htdocs\curlproject.php on line 20

В строке 20 у вас есть:

$file_name = "images-folder/".$split_image['filename'].".".$split_image['extension'];

Так что все, что должно быть настройка $split_image['extension'] очевидно, ничего не делает.

Далее его:

Warning: fopen(images-folder/Z.): failed to open stream: Permission denied in C:\xampp\htdocs\curlproject.php on line 21

Строка 21 использует имя файла, построенное в строке 20, и пытается открыть файл:

$file = fopen($file_name , 'w') or die("X_x");

Сначала нужно исправить первую проблему, чтобы получить правильное имя файла, затем вы должны использовать абсолютный путь для указания каталога и, наконец, убедиться, что учетная запись пользователя, на которой работает ваш веб-сервер, имеет разрешения на запись в каталог.

0

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