使用php-phantomjs时在c:\windows写入出错

发布于 2022-09-06 19:46:36 字数 709 浏览 15 评论 0

在学习php-phpantomjs时,使用文档源码报错
public function getEdit(Request $request){

    $client = Client::getInstance();

    $request  = $client->getMessageFactory()->createRequest();
    $response = $client->getMessageFactory()->createResponse();

    $request->setMethod('GET');
    $request->setUrl('http://info.sporttery.cn/football/pool_result.php?id=104873');

    $client->send($request, $response);

    if($response->getStatus() === 200) {
        echo $response->getContent();
    }
}

貌似是写入权限问题,但是为什么会在C:/WINDOWS上写入呢?怎么解决?图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最后的乘客 2022-09-13 19:46:36

vendorjonnywphp-phantomjssrcJonnyWPhantomJsDependencyInjectionServiceContainer.php

        self::$instance->setParameter('phantomjs.cache_dir', sys_get_temp_dir());

上面这行换成下面这行,就是缓存目录改一下,改成可以写入的目录

        self::$instance->setParameter('phantomjs.cache_dir', 'd:/');
童话 2022-09-13 19:46:36

哥们,你这个可以动态输出内容吗?我的windows上面不能运行,很烦人。

    public function htmlToImage()
    {
        //模拟传过来的参数
        $url = request('url', 'http://192.168.0.136:92/htmlToImageView');
        $type = request('type', 1);
        request()->offsetSet('api_token', 'bxs8T3pfy3IfcjftJWBfcNFsvB2Vh0W9Xgr7fww3jYUTuaIn5xFR0fYYr9iJ');
        request()->offsetSet('user_info_id', 1);
        request()->offsetSet('openid', 0);
        // dd(request()->all());

        $client = Client::getInstance();
        $client->isLazy();

        $client->getEngine()->debug(true); //允许或禁止调试
        // 判断系统类型来决定执行文件的名称
        $excute = PHP_OS == 'WINNT' ? 'phantomjs.exe' : 'phantomjs';
        $client->getEngine()->setPath(base_path() . '/bin/' . $excute);

        //截取全屏
        $width = 0;
        $height = 0;
        $top = 0;
        $left = 0;

        //唯一文件名
        $name = uniqid();
        //存储位置
        $storage_path = storage_path('app/public/capture/' . $name . '.jpg');
        if ($type == 1) {
            $request = $client->getMessageFactory()->createCaptureRequest($url, 'GET');
        } else {
            $request = $client->getMessageFactory()->createCaptureRequest($url, 'POST');
            $request->addHeader('X-CSRF-TOKEN', csrf_token());
        }
        //带上cookie和csrftoken,传输的数据
        $request->setRequestData(
            array(
                'api_token' => request('api_token'),
                'user_info_id' => request('user_info_id'),
                'openid' => request('openid'),
            ));

        $request->addHeader('cookie', request()->header('cookie'));

        $request->setTimeout(10000); //超过指定时间则中断渲染
        $request->setOutputFile($storage_path);
        $request->setViewportSize($width, $height);
        $request->setCaptureDimensions($width, $height, $top, $left);
        $response = $client->getMessageFactory()->createResponse();
        $client->send($request, $response);
        $log = $client->getLog(); #输出调试日志
        dd($log, $response->getContent()); #输出内容
        return $this->outPutJson($storage_path);
    }

    public function htmlToImageView()
    {
        $request = request()->all();
        return view('test.htmlToImageView', compact('request'));
    }

视图文件内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <a href="">测试一下!</a>
    {{Request::url()}}
    {!! QrCode::size(100)->generate(Request::url()); !!}
    @php
        dd($request);
    @endphp
</body>
</html>

clipboard.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文