У меня есть следующий 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() - это массив. У вас есть несколько синтаксических ошибок в коде, потому что вы просто указали кучу переменных, не помещая их внутри массива.
Даже если 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";