PHP EXECUTE PERL с инструментами

0

У меня есть следующий php-скрипт, который должен вызвать скрипт perl вместе с аргументами. Если у меня есть правильные пути, есть ли что-то неправильное в синтаксисе? Php и perl на стороне сервера. Php получает информацию ($ GET ['zipc'] через URL-адрес. Perl-скрипт выдаст xml файл на сервере. Я продолжаю получать неожиданный "exec" (T_STRING) в строке 8. Спасибо за любой совет.

<?php
$zipc="-Z";
$lineup="-Y USA";
$fformat="-U";
$duration="-d 2";
$outfile="-o";
$ofile="guide.xml"
exec("perl http://www.myserver.com/myperl.pl" $zipc $_GET['zipc'] $lineup $fformat $duration           $outfile "http://www.myserver.com/myfile.xml");
print"FINALLY GOT TO END";
?>

EDIT: Ну, я думал, что все это получилось. Теперь я получаю следующую ошибку: Неустранимая ошибка: могут передаваться только переменные

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

EDIT 2: Проблема заключается в массиве. Из того, что я понимаю, массив не может быть передан, как показано в ответе, без возникновения ошибки. Чтобы исправить проблему, я объединяю переменную и $ _GET в одну переменную. Казалось, что проблема решена.

Теги:
exec
syntax

1 ответ

1
Лучший ответ

Второй аргумент функции exec() - это массив. У вас есть несколько синтаксических ошибок в коде, потому что вы просто указали кучу переменных, не помещая их внутри массива.

Даже если exec() сделал длинный список параметров, а это не так, ваш код все равно не будет работать, потому что вы не разделили их запятыми.

Это должно работать (обратите внимание на изменения в строках 7 и 8):

<?php
$zipc="-Z";
$lineup="-Y USA";
$fformat="-U";
$duration="-d 2";
$outfile="-o";
$ofile="guide.xml";
exec("perl http://www.myserver.com/myperl.pl", array($zipc, $_GET['zipc'], $lineup, $fformat, $duration, $outfile, "http://www.myserver.com/myfile.xml"));
print"FINALLY GOT TO END";
  • 0
    Я получаю ошибку Parse: синтаксическая ошибка, неожиданная строка 'exec' (T_STRING) 8.
  • 0
    Я только что заметил, что вы пропустили точку с запятой в строке 7. Это было исправлено в моем ответе.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню