Установка PhantomJS на сервер

я использую PhantomJS на окнах и доступ к файлам через командную строку. Теперь я хочу установить его на сервере, на котором я работаю на локальном хосте, поэтому я хочу, чтобы он был установлен на Apache, чтобы я мог интегрировать Phantom с моим HTML и PHP для использования на веб-странице. Я использую Windows 8.1 и Apache Server для локального хоста.

Могу ли я на самом деле это сделать? Как использовать его в веб-сервисах сейчас?
Как я буду использовать это, если я должен сделать свою сеть онлайн? я должен попросить моего хостинг-провайдера разместить эту вещь на сервере для меня?

Я использую phantomJS для разработки веб-сервиса, который принимает URL-адрес в качестве входного и возвращает файл изображения снимка экрана веб-сайта.

3

Решение

«Установка» PhantomJS просто добавляет его путь к переменной среды PATH.

Работает через php

Поскольку вы используете php, вы должны вызывать PhantomJS из вашего php-скрипта, как показано Вот где вам нужно указать полный путь к исполняемому файлу PhantomJS. Вы также можете использовать putenv расширить путь прямо из php, как видно Вот.
Вы можете вернуть что-то из скрипта PhantomJS в $output переменная exec а затем разобрать его.

Запуск через модуль веб-сервера

PhantomJS обеспечивает модуль веб-сервера. Вы можете написать скрипт, который прослушивает запросы, создает page по запросу и возвращает изображение. Вы бы как-нибудь запустили скрипт при запуске или вместе с apache. Также возможно написать оболочку, чтобы вы могли запускать ее как службу Windows. Может быть возможно передать запросы через Apache так, чтобы PhantomJS не был полностью открыт снаружи.
Хотя этот вариант немного коварен, потому что PhantomJS может потерпеть неудачу, и тогда вам понадобится какой-то механизм возрождения. Ваш скрипт также может столкнуться с утечкой памяти.

Возврат изображения

Обе вышеперечисленные опции не зависят от того, как вы возвращаете изображение. Есть несколько возможностей.

  1. По запросу создайте случайное и уникальное имя файла и render страница в файл. Затем вы можете отправить имя файла клиенту, который впоследствии может запросить его. Для этого нужны два запроса.
  2. По запросу сделать страницу через renderBase64 получить данные простого изображения. Теперь вы можете отправить эти данные изображения непосредственно в ответ, и клиент может поместить их в DOM через data:-uri.
5

Другие решения

//throws a lot of errors because searching some libraries
$cmd = 'unset DYLD_LIBRARY_PATH ;';
$cmd.= ' /abs/path/to/phantomjs';
$cmd.= ' /abs/path/to/script.js';

//set environment variable to node source
putenv('PATH=/abs/path/to/node/bin/');

//now exec the cmd and pipe the errors to stdout
exec($cmd.' 2>&1', $output);

//and output the results
print_r($output);

Вот ответ из предложенного выше URL.
Я изменил его соответственно моим путям

<?php

$cmd = ' ./ScreenShotWeb/phantomjs';
$cmd.= ' ./ScreenShotWeb/shot.js';

putenv('PATH=./ScreenShotWeb/');

exec($cmd.' 2>&1', $output);

print_r($output);
?>

Я пытаюсь запустить это, но это дает следующее

Массив ([0] => ‘.’ Не распознается как внутренний или внешний
команда, [1] => работающая программа или командный файл. )

в моей корневой папке (C: / xampp / htdocs) есть папка ScreenShotWeb, в которую я поместил EXE-файл PhantomJS + все файлы.

0

По вопросам рекламы [email protected]