2017-02-18 6 views
0

Я пытаюсь загрузить исполняемый файл для Phantomjs на свой веб-сервер. В настоящее время Wordpress установлен на этом сервере, поэтому вызов фантома будет выполняться в основном за счет использования функций php. На сервере работает Linux x86_64, который является тем же самым хранилищем Phantom, который я загрузил. В одном из моих файлов шаблонов wordpress я пытаюсь вызвать фантом и попытаться запустить скрипт, но ничего не повторится. Я знаю, что javascript прав, потому что это был один из примеров. Кроме того, файл Phantomjs имеет соответствующие разрешения для запуска. Так что проблем нет. Вот весь код, который я пытаюсь использовать, чтобы заставить его работать правильно.Как запустить Phantomjs на Linux Webserver

<?php 
/* 
Template Name: Home Template 
Description: Page template to show home page content. 
*/ 

//phantom/phantomjs-directory/bin/phantomjs 
//phantom/phantomjs-directory/examples/version.js 

get_header(); 
?> 
<?php 
echo exec('phantom/phantomjs-directory/bin/phantomjs phantom/phantomjs-directory/examples/version.js'); 
?> 

Скрипт вызывается расположен один каталог назад в examples/ вместо bin/ и могут быть найдены ниже:

"use strict"; 
console.log('using PhantomJS version ' + 
phantom.version.major + '.' + 
phantom.version.minor + '.' + 
phantom.version.patch); 
phantom.exit(); 

Ничто вообще не будучи зарегистрированным или эхом. Почему это должно быть?

ответ

0

Я сделал пару ошибок с этим. Золотой код, который сделал это для меня было только это:

echo exec('/home/mainshee/public_html/wp-content/themes/twentyseventeen/phantom/phantomjs-directory/bin/phantomjs /home/mainshee/public_html/wp-content/themes/twentyseventeen/phantom/phantomjs-directory/examples/version.js'); 

Основная ошибка, которую я сделал, что пути не EXACT. Вы могли бы подумать, что только включение пути из его местоположения, на котором вы уже были, будет адекватным, но я нашел, что им нужен путь ENTIRE. Начните готово. Я также убедился, что каждый файл, который я пытался выполнить, имеет разрешения 0755. Последняя предосторожность, которую я принял, состояла в том, чтобы использовать scp для загрузки папки файла phantomjs вместо традиционного метода. Это было сделано, чтобы избежать каких-либо сбоев (хотя я не уверен, что это имело какое-либо значение в конце). Надеюсь, это поможет кому-то еще!

1

Попробуйте использовать эхо и обратные метки.

echo `/phantom/phantomjs myscript.js`; 
+0

Ничего не отражается с помощью этого метода – Ethan

+0

Что происходит, когда вы запускаете это из оболочки? Кроме того, убедитесь, что .js находится в 'pwd' – pguardiario

+0

Выполнение' bin/phantomjs examples/hello.js' выводит идеальный результат. Но ничего из этого не происходит из эха в PHP-файле. – Ethan

1

Правильный способ exec является

exec('/phantom/phantomjs myscript.js', $response); 
echo implode("<br>", $response); 

В любом случае вы должны сначала проверить, что скрипт работает, войдя в сервер через SSH и пытается запустить скрипт вручную. Бинарный файл PhantomJS может не соответствовать архитектуре серверного процессора (x64 vs x86).

Также обратите внимание на путь к двоичному и сценарию, самым простым способом является использование абсолютных путей.

+0

Я уверен, что версия Phantomjs, которую я имею на моем сервере, совместима с архитектурой серверного процессора. Я проверил, что архитектура была x86_64 перед установкой Phantomjs x86_64 с веб-сайта. Сценарий, который я использую, является одним из их примеров. Когда я использую ваш код выше единственного фрагмента, который повторяется, это «Массив». Основная проблема, которую я испытываю, заключается в том, что в приведенном выше скрипте никакие сообщения не регистрируются на консоли. Это заставляет меня полагать, что сценарий не работает, и он просто отражает реакцию по умолчанию. Твои мысли? – Ethan

+0

Плохо, $ response действительно массив, поэтому см. Обновленный ответ о том, как его просматривать. – Vaviloff

+0

Скрипт отлично работает через 'SSH', но ничего не происходит, когда я корректирую код до вашего предложения выше. – Ethan

Смежные вопросы