phpでスクリンーショットをとるのに wkhtmltoimage を使ってみた <サーバーインストール>

サーバーにインストールってどうやる?

まずはダウンロード

wkhtmltopdf をダウンロードしてきます。

Windows・Linux・OS X とそれぞれ、32bit/64bit の両方がありました。

私の場合は、Windowsでも実行してみたかったので、Windows 64bit と、サーバーに合わせて、 Linux 64bit の二つをダウンロードしました。

Windows版は、wkhtmltox-0.12.3_msvc2013-win64.exe というファイル名で、
Linux版は wkhtmltox-0.12.3_linux-generic-amd64.tar.xz というファイルでした。

レンタルサーバーが32bitか64bitかを調べるのには、SSH接続し、

$ uname –a

で確認。

 

インストール方法は?

インストールする方法や場所をググって調べました。

そうしたら、ほとんどが、ubuntu や Cent OS にインストールするものばかり!!

それで、設置場所は /usr/bin とか /usr/local/bin っていうのばかり!!!

私が、設置したいのはレンタルサーバー上です。

レンタルサーバーで、 /usr/bin や /usr/local/bin をいじらせてくれるの??という疑問を持ち、ダメ元でサーバーのサポートに質問。

結果は当然撃沈です。

さらに wkhtmltopdf をインストールしたいと伝えてあったので、「サポート対象外です。」、当たり前か・・・。

要は自分が pathを設定できればいいんだろ!と、SSH接続し

$ echo $PATH

で、PATHを確認。

すると、ユーザーアカウントエリア(私の契約している範囲内)で、フォルダは存在していないのにPATHに指定されているフォルダ名を発見。
こんな感じです。「ユーザーアカウントエリア/bin」

これなら、「PATHを設定しなくていいやっ」と思い、binフォルダを作成。そこに、 wkhtmltox-0.12.3_linux-generic-amd64.tar.xz を置きました。

 

実際にインストール

契約しているサーバーが二つあるので、両方で試しました。

片方のサーバーは、 tar.xz を解凍できましたが、もう片方は解凍できませんでした。
tar の オプションが無効だそうです。
いろいろ試しましたがダメ。

うまくいった方でテストです。

以前に説明したように、 wkhtmltox というフォルダが出来て、その中に実行ファイルがあるので、二つとも 「ユーザーアカウントエリア/bin」にコピーしました。

ライブラリーとかフォントとか必要みたいですが、うまくいった方のサーバーでは特に何もしなくてもすんなりいきました。

実際にコマンドで実行してみる

うまく動作するか、SSH接続の状態で、コマンドとして実行してみました。

その結果、うまく動作することが確認できました。

このサイトで実験です。

オプションがたくさんあるので、いろいろ指定してみましたがすべて実行結果(出力される画像)が異なりました。

コマンドラインでオプションを指定するのが面倒なので、PHPで実行してみることにしました。

PHPで実行してみる

PHPでは、exec で命令しました。

弊社のユーザーサイトでいろいろと試しましたが、うまく行く(実行結果がそれほど変わらない。安定している)サイトと、うまく行かないサイトに分かれました。

特にこのサイト(今ご覧になっているサイト)の実行結果が一番ひどい!!ガックリ来ました。

オプションや実行するブラウザによって、実行結果が異なる

PHPでは、URLやオプションを選択できる入力画面を作成し、実行!

実行してみたのは、URLはこのサイト(https://nfc-jp.net)で、

  • デフォルト(標準):URL と 出力ファイル名のみの指定。
  • 縦サイズ・横サイズを1400pxに指定し、さらに
    • disable-smart-width
    • no-stop-slow-scripts
    • javascript-delay デフォルトの 200 と 120000の2種類(単位はms)

ということにしました。

shot_nfc-jp_net_sq

本当は、こういう風に出てほしいんですが、しかし・・・
(ちなみにこの画像はPCのスクショです。)

長くなったので、実行結果の報告は次回です。