PHP PhantomJS 无法使截图目录可写
PHP PhantomJS unable to make screenshot directory writable
我正在尝试捕获屏幕并将其保存在本地。当我 运行 代码时,它会向我发送一条错误消息
Fatal error: Uncaught JonnyW\PhantomJs\Exception\NotWritableException: Output file is not writeable by 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>
我注意到的另一件有趣的事情是,如果我在 screenshot/TEST.jpg 之前删除了“/”,我会收到一个没有错误但仍然没有屏幕截图的空白页面。
我也在根目录下创建了截图文件夹
看,您正在尝试将屏幕截图写入 /screenshot/
文件夹。路径是绝对的。因此,请确保您的磁盘根目录中有 /screenshot/
文件夹,并且脚本可以写入该文件夹。
有两种路径:绝对和相对。
第一个是从磁盘根目录开始的路径,它总是从/
字符开始,像这样:/usr/local/bin/phantomjs
。
第二个是相对于当前工作目录的路径,它可以以./
个字符开头,或../
,或只是some/folder/
。所以,在你的情况下,如果你的当前工作目录中有 screenshots
文件夹,你应该像这样指定输出文件:
$request->setOutputFile('./screenshot/TEST.jpg');
注意开头的 点 字符。
我正在尝试捕获屏幕并将其保存在本地。当我 运行 代码时,它会向我发送一条错误消息
Fatal error: Uncaught JonnyW\PhantomJs\Exception\NotWritableException: Output file is not writeable by 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>
我注意到的另一件有趣的事情是,如果我在 screenshot/TEST.jpg 之前删除了“/”,我会收到一个没有错误但仍然没有屏幕截图的空白页面。
我也在根目录下创建了截图文件夹
看,您正在尝试将屏幕截图写入 /screenshot/
文件夹。路径是绝对的。因此,请确保您的磁盘根目录中有 /screenshot/
文件夹,并且脚本可以写入该文件夹。
有两种路径:绝对和相对。
第一个是从磁盘根目录开始的路径,它总是从/
字符开始,像这样:/usr/local/bin/phantomjs
。
第二个是相对于当前工作目录的路径,它可以以./
个字符开头,或../
,或只是some/folder/
。所以,在你的情况下,如果你的当前工作目录中有 screenshots
文件夹,你应该像这样指定输出文件:
$request->setOutputFile('./screenshot/TEST.jpg');
注意开头的 点 字符。