Я пытаюсь запустить простую программу phantomjs, передавая некоторые аргументы из php, и единственный аргумент, который может прочитать мой js, это первый (args [0]).
Вот код
PHP:
...
$resp = exec("phantomjs phantom/test.js hello other args");
...
Фантомные / test.js:
var args = require('system').args;
str = 'Args: ';
args.forEach(function (arg, i) {
str += (i + ': ' + arg);
});
str += ' Length: '+args.length;
str = str.replace(/(\r\n|\n|\r)/gm,"");
console.log(str);
phantom.exit();
Выход:
Args: 0: phantom/test.js Length: 1
Я использую Windows 7. Я пытался запустить этот код непосредственно из командной строки Windows (cmd-> ‘phantomjs test.js some args’), и он работал правильно, поэтому, я думаю, что проблема заключается в php и его отношении с «require (‘system’)» фантомов.
Простите за мой ужасный английский.
Большое спасибо !
То, что вы делаете, это добавление строки в одну переменную.
Попробуйте код ниже
$resp = exec("phantomjs phantom/test.js arg1 arg2 ..... argN");
Теперь код phantomjs был бы таким, чтобы перехватывать аргументы, отправленные из файла Php.
var system = require('system');
var args = system.args;
var argument1 = args[1];
var argument2 = args[2];
.
.
.
var argument3 = args[N];
Вы можете использовать значения хранимых переменных.
Других решений пока нет …