Я пытаюсь сделать снимок экрана и сохранить его локально. Когда я запускаю код, он стреляет в меня сообщение об ошибке
Неустранимая ошибка: Uncaught JonnyW \ PhantomJs \ Exception \ NotWritableException: выходной файл не доступен для записи PhantomJs:
Это мой код
<?php
require 'vendor/autoload.php';
use JonnyW\PhantomJs\Client;
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$client = Client::getInstance();
// $client->getEngine()->setPath('/usr/local/bin/phantomjs');
$width = 800;
$height = 600;
$top = 0;
$left = 0;
/**
* @see JonnyW\PhantomJs\Http\CaptureRequest
**/
$request = $client->getMessageFactory()->createCaptureRequest('http://jonnyw.me');
$request->setOutputFile('/screenshot/TEST.jpg');
$request->setViewportSize($width, $height);
$request->setCaptureDimensions($width, $height, $top, $left);
/**
* @see JonnyW\PhantomJs\Http\Response
**/
$response = $client->getMessageFactory()->createResponse();
// Send the request
$client->send($request, $response);
?>
И это моя форма
<!DOCTYPE html>
<html>
<head>
<title>Upload Files to Crop/Take Screenshot of URL</title>
</head>
<body>
<h1>TAKE SCREENSHOT OF URL WITH phantomjs <span style="color:red">[NOT WORKING YET!!!!]</span></h1>
<form enctype="multipart/form-data" method="post" action="phantomjs.php">
<div class="row">
<label for="siteToCapture">Site to Capture</label><br />
https://www.<input type="input" name="siteToCapture" id="siteToCapture" />.com
</div>
<div class="row">
<input type="submit" value="SCAN" />
</div>
</form>
</body>
</html>
Еще одна интересная вещь, которую я заметил, была, если я удалил ‘/’ до скриншота / TEST.jpg, я получил пустую страницу без ошибок и все еще без скриншота.
Я также создал папку со скриншотами в корневом каталоге.
Смотри, ты пытаешься написать скриншот /screenshot/
папка. И путь абсолютен. Поэтому убедитесь, что у вас есть /screenshot/
Папка в корне вашего диска и сценарий может написать на него.
Есть два вида путей: абсолютный а также родственник.
Первый, это путь, который начинается с корня вашего диска, и это всегда начинается с /
характер, как это: /usr/local/bin/phantomjs
,
Второй путь, который родственник к вашему текущему рабочему каталогу, он может начинаться с ./
символы или ../
, или просто some/folder/
, Итак, в вашем случае, если у вас есть screenshots
Папка в вашем текущем рабочем каталоге, вы должны указать выходной файл следующим образом:
$request->setOutputFile('./screenshot/TEST.jpg');
Обратите внимание на точка Чар в начале.
Других решений пока нет …