node.js — PHP для исполнения сценария casperjs / phantomjs

У меня проблемы с использованием PHP для выполнения сценария casperjs:

<?php
putenv("PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs");
var_dump(exec("echo \$PATH"));
exec("/usr/local/bin/casperjs hello.js website.com 2>&1",$output);
var_dump($output);

Что приводит к следующему выводу:

string(43) "/usr/gnu/bin:/usr/local/bin:/bin:/usr/bin:."array(1) {
[0]=>
string(36) "env: node: No such file or directory"}

Единственные сообщения от stackoverflow, которые я мог найти, намекали, что есть проблема с моими путями, и что, возможно, пользователь PHP не может получить доступ к тому, что ему нужно.

Я также попробовал следующее: sudo ln -s /usr/bin/nodejs /usr/bin/node

Кто-нибудь знает, что мне нужно сделать или изменить для устранения этой ошибки?

Спасибо

2

Решение

Я предполагаю, что у вас есть что-то, что предполагает, что узел установлен.

Во-первых, вы запускаете php из командной строки? То есть как php test.php в оболочке Если это так, вы можете запустить команды ниже, как они есть. Если через веб-сервер среда может быть другой. Я бы начал с создания phpinfo(); скрипт, а затем выполните команды устранения неполадок через shell_exec() команды. Но, так как это неприятно, я сначала заставлю его работать из командной строки, и только возиться с этим, если поведение будет отличаться при запуске через веб-сервер. (Кстати, если вы работаете с заданием cron, опять же, среда может немного отличаться. Но беспокойтесь об этом, только если она работает из командной строки, но не работает из cron.)

Устранение неполадок hello.js

Легкий. Убедитесь, что ваш скрипт не ссылается на node в любом месте. Также помните, что вы не можете использовать узлы модулей. Так ищи require() Команды, которые не должны быть там.

Устраните неполадки в вашей оболочке bash

Бежать printenv | grep -i node чтобы увидеть, если что-нибудь есть. Но когда PHP запускает команду оболочки, запускаются и другие файлы. Так что проверь что в /etc/profile а также ~/.bash_profile , Также проверьте /etc/profile.d/, /etc/bashrc а также ~/.bashrc, Вы в основном ищете все, что упоминает node,

Устранение неполадок фантомных / Casperjs

Как вы установили фантомы и casperjs? Являются ли фактические двоичные файлы в каталоге / usr / local / bin или символическими ссылками или являются сценариями bash для. Например. на моей машине:

cd /usr/local/bin
ls -l casperjs phantomjs

дает:

lrwxrwxrwx 1 darren darren 36 Apr 29  2014 casperjs -> /usr/local/src/casperjs/bin/casperjs
lrwxrwxrwx 1 darren darren 57 Apr 29  2014 phantomjs -> /usr/local/src/phantomjs-1.9.7-linux-x86_64/bin/phantomjs

А затем проверить каждый файл:

head /usr/local/src/casperjs/bin/casperjs
head /usr/local/src/phantomjs-1.9.7-linux-x86_64/bin/phantomjs

Первый говорит мне, что Каспер на самом деле сценарий Python #!/usr/bin/env pythonв то время как второй заполняет экран мусором, сообщая мне, что это исполняемый двоичный файл.

4

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

Других решений пока нет …