PHP PhantomJS не может сделать каталог скриншотов доступным для записи

Я пытаюсь сделать снимок экрана и сохранить его локально. Когда я запускаю код, он стреляет в меня сообщение об ошибке

Неустранимая ошибка: 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, я получил пустую страницу без ошибок и все еще без скриншота.

Я также создал папку со скриншотами в корневом каталоге.

0

Решение

Смотри, ты пытаешься написать скриншот /screenshot/ папка. И путь абсолютен. Поэтому убедитесь, что у вас есть /screenshot/ Папка в корне вашего диска и сценарий может написать на него.

Есть два вида путей: абсолютный а также родственник.

Первый, это путь, который начинается с корня вашего диска, и это всегда начинается с / характер, как это: /usr/local/bin/phantomjs,

Второй путь, который родственник к вашему текущему рабочему каталогу, он может начинаться с ./ символы или ../, или просто some/folder/, Итак, в вашем случае, если у вас есть screenshots Папка в вашем текущем рабочем каталоге, вы должны указать выходной файл следующим образом:

$request->setOutputFile('./screenshot/TEST.jpg');

Обратите внимание на точка Чар в начале.

1

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

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

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