질문을 삭제하지 말아주세요.!
 
1
0
-1
#composer.json

    "scripts": {
        "post-install-cmd": [
            "PhantomInstaller\\Installer::installPhantomJS"
        ],
        "post-update-cmd": [
            "PhantomInstaller\\Installer::installPhantomJS"
        ]
    }
 "config": {
        "bin-dir": "bin"
    }
메뉴얼에 이렇게 나와있어서


(제가 진행중인 프로젝트 composer.json)

"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\"",

"PhantomInstaller\\Installer::installPhantomJS"


],
"post-create-project-cmd": [
"@php artisan key:generate",

"PhantomInstaller\\Installer::installPhantomJS"


],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},

"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true,

"bin-dir": "bin"


},

위에 메뉴얼에 나온 얇은 문장을 저렇게 제 composer.json파일에 추가시켰습니다


그리고 커멘드라인에서


composer require "jonnyw/php-phantomjs:4.*"

실행해주니까


To enable extensions, verify that they are enabled in your .ini files:
- C:\Bitnami\wampstack-7.1.18-1\php\php.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

Installation failed, reverting ./composer.json to its original content.


이런 오류가 나오네요 ㅠㅠ php.ini 에서 확장을 해주라는말 같은데 어떤부분을 확인해보면 좋을까요 .. ?

    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      아마도 팬텀js 가 cli 모드에서만 작동 가능하니까

      cli 모드에서 로드 되는 ini 파일을 

      C:\Bitnami\wampstack-7.1.18-1\php\php.ini 

      이걸로 맞춰주라는 의미 같습니다.

      1. getahead92

        ini 파일을 어떻게 맞추는지 이해가 안가는데요 ㅠㅠ

        현재 지금 말습하시는 C:\Bitnami\wampstack-7.1.18-1\php 에 php.ini 파일이있는데요

        그 파일 안쪽에서 cli 위치를 설정하는데가 있는건가요 ?

      2. 유창화

        일단 콘솔에서 php --ini 를 쳐서 어떤 경로의 ini 파일을 로드하는지 확인하셔야 할것같습니다

        만약 웹에서 로드하는 경로와 다르다면 둘을 같은걸 로드하게하라고 하는것 같습니다

      3. getahead92

        ini 설정이 뭘해야 될지몰라서

        https://github.com/alwex/php-casperjs 에서

        모듈을 설치하고자 하는데요,,, npm 사이트가서 npm를 다운받고 콘솔에서 제가 진행하는 프로젝트 폴더안에서 npm install 해서 phantomjs casperjs 다운받고

        composer require phpcasperjs/phpcasperjs 해서 끝냈는데

        예제가 실행 안대고

        syntax error, unexpected 'use' (T_USE)

        1. Route::get('/', function () {
        2. use Browser\Casper;
        3. $casper = new Casper();
        4. // forward options to phantomJS
        5. // for example to ignore ssl errors
        6. $casper->setOptions([
        7. 'ignore-ssl-errors' => 'yes'
        8. ]);
        9. // navigate to google web page
        10. $casper->start('http://www.google.com')

        오류가나옵니다, 뭐를 더 설정해 줘야하는건가요,,? 

      4. 유창화
        use Browser\Casper;

        이렇게 밖으로 빼서 제일 먼저 작성해야 하는게 아닌가 싶습니다.


        php-casperjs 는 안써봣지만

        기본 예제 보니까 객체를 선택해서 클릭 같은게 가능해 보입니다.

        원래 시도 하시던 것보단 나아 보입니다.


      5. getahead92

        답변 정말 감사합니다 ㅠㅠ

        하나만더 질문해도 괜찮을까요?? 

        npm 으로 phantomjs 와 casperjs를 설치했구요 프로젝트 폴더 안에 node_modules 폴더와 함께

        폴더 안에 phantomjs , casperjs 폴더가 생성되었습니다 

        그리고 controller 의 상단에 use << 로 지정을 해줘야 될것같은데 어떤 것을 지정해줘야될지 모르겠습니다 ... ㅠㅠ 그리고 디렉토리도 어떤식으로 작성해줘야 할지 모르겠어요 도움좀 부탁드릴게요 ㅠㅠ

        혹시 원격같은걸로 제 상태를 봐주실수있으실까요 ㅠㅠ ? 사례는 꼭 하겠습니다

      6. 유창화

        제가 라라벨은 공부해 보지 않아서

        깊게 답변을 드리기는 어려울것 같고.......

        use Browser\Casper;
        이것만으로 사용 할수 있을 것으로 보이는데

        안되나요?


        phantomjs 는 헤드레스 브라우져 이고

        casperjs 는 nodejs 로 작성된 

        phantomjs 를 제어하는 모듈 같고

        다시 그것을 

        phpcasperjs 로서 php 에서 사용 할수 있도록 랩 한거 같은데요



      7. 유창화

        만약 저대로 안된다면 

        라라벨에서 사용하는 autoload 와 관련이 있을것 같습니다.

        https://blog.grotesq.com/post/503

        이 문서를 참고 하시는것이 좋을듯 합니다.


      CommentAdd your comment...
    2.  
      1
      0
      -1

      일단 윈도우에서 제가 해본 바로는 잘 됩니다


      "post-install-cmd": [
                  "PhantomInstaller\\Installer::installPhantomJS"
              ],
              "post-update-cmd": [
                  "PhantomInstaller\\Installer::installPhantomJS"
              ]
      이걸 그대로 scripts 안에 추가하고 해보시는건 어떨까요?

      기존에 추가하신 부분과 의미가 약간 다를것 같아서요

      1. 유창화

        저는 샘플 코드도 동작이 잘 됩니다.


        <?php

        require 'vendor/autoload.php';

        use JonnyW\PhantomJs\Client;

        $client = Client::getInstance();
        $client->getEngine()→setPath('C:/php/bin/phantomjs.exe');//실행경로를 못찾길래 직접 정의

        /**
        * @see JonnyW\PhantomJs\Http\Request
        **/
        $request = $client->getMessageFactory()->createRequest('http://jonnyw.me', 'GET');

        /**
        * @see JonnyW\PhantomJs\Http\Response
        **/
        $response = $client->getMessageFactory()->createResponse();

        // Send the request
        $client->send($request, $response);

        if($response->getStatus() === 200) {

        // Dump the requested page content
        echo $response->getContent();
        }

      2. 유창화

        어떤 용도로 쓰실지는 모르지만

        제가 문서나 이런걸로 봐선

        파이썬이나 다른 언어에서 지원되는 형식 보다는 부족한것 같습니다.

        메뉴얼 상에서는

        프레임을 선택한다던가

        클릭을 한다던가

        xpath,  css selector 를 통한 객체 선택이라던가

        이런것이 없습니다.

        문서에만 없을지도 모릅니다만.....

        아무튼 디테일 하고 광범위하게 사용하기에는 

        무리가 있거나 많은 삽질이 필요할 것으로 보이네요.

        제 개인 의견이었습니다.


        저정도의 사용 범위라면 차라리 guzzle 쪽을 파보시는게 좋을듯 합니다.

      CommentAdd your comment...