質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

742閲覧

PHP PhantomJSを使ってキャプチャを撮りたい

taro_nii_chan

総合スコア207

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/11/19 12:04

環境

MAMP
PHP Version 7.1.1
Google Chrome

やりたい事

PHP PhantomJSを使って特定のURLのキャプチャを撮りたいです。
やるのは初めてではなく、PHP PhantomJSも下記の手順でインストール済みです。

composer.json

json

1 2{ 3 "require": { 4 "jonnyw/php-phantomjs": "4.*" 5 }, 6 "scripts": { 7 "post-install-cmd": [ 8 "PhantomInstaller\Installer::installPhantomJS" 9 ], 10 "post-update-cmd": [ 11 "PhantomInstaller\Installer::installPhantomJS" 12 ] 13 } 14}

$ composer install

vendorディレクトリもその中のautoload.phpbinの中のphantomjsも存在を確認済みです。

その上で、
以下のコードが動きません。

PHP

1<?php 2 3require( 'vendor/autoload.php' ); 4 5use JonnyW\PhantomJs\Client; 6 7$client = Client::getInstance(); 8 9$request = $client->getMessageFactory()->createCaptureRequest('http://jonnyw.me'); 10$response = $client->getMessageFactory()->createResponse(); 11 12// ファイルの保存先を指定する 13$file = 'capture.jpg'; 14 15$request->setOutputFile($file); 16$client->send($request, $response);

デベロッパーツールで見ると、Status が 500 で返って来ています。どこがおかしいのかと色々コメントアウトしてみたら、最終行をコメントアウトした時だけ 200 になります。当然ですがキャプチャは撮れません。

エラーが吐き出されるのならまだしも、500 って構文エラーとかですよね?何が起こってるのか分からなくて。

一応MAMPを再起動もしてみたんですが、変わりませんでした。

打開策を教えていただけませんでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

次回からエラーメッセージも載せた方がいいですよ。

PHP Fatal error: Uncaught exception 'JonnyW\PhantomJs\Exception\ProcedureFailedException' with message 'Error when executing PhantomJs procedure - File does not exist or is not executable: bin/phantomjs' in /vagrant/dev/vendor/jonnyw/php-phantomjs/src/JonnyW/PhantomJs/Procedure/Procedure.php:138

phantomjsのパスを指定すればokです。

php

1$client = Client::getInstance(); 2$client->getEngine()->setPath('vendor/bin/phantomjs');

投稿2017/11/19 13:54

ooeok

総合スコア469

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taro_nii_chan

2017/11/19 21:42

出来ました。 そうですね、エラーログというものがあることをあまり意識していませんでした。ログを見る習慣をつけると質問せずに自分で解決できやすくなるかもですね。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問