Вопрос по php, perl, exec, shell – Выполнить Perl в PHP [дубликат]

9

Possible Duplicate:
Calling Perl script from PHP and passing in variables, while also using variablized perl script name

Я хочу выполнить Perl-скрипт через PHP. я используюexec() выполнить скрипт perl. Он работает на моей машине, но не работает на сервере. Сервер основан на CentOS Linux.

Я дал полное разрешение (777) как для PHP, так и для файла сценария perl. Когда я пытаюсь выполнить, я получаю следующую ошибку в error_log

sh: /perl: No such file or directory

Я пытался выполнить, используя следующие способы

exec("perl -w Script.pl $username $password",$output);
exec("/usr/bin/perl -w Script.pl $username $password",$output);
exec("/usr/bin/perl Script.pl $username $password",$output);

Я также попытался с помощьюsystem функция

$output = system("perl Script.pl $username $password");

Ничего не происходит, когда я пытаюсь это сделать.

Я также пытался выполнить Perl с помощьюpassthru() функция

passthru("/usr/bin/perl -w Script.pl $username $password",$output);

Когда я выполню эту строку,$output печатает 127 и ничего не происходит в сценарии.

Я проверил, является ли файл исполняемым или нетis_executable() функция. Это показывает, что файл не является исполняемым.

Код как ниже

$file = 'Script.pl';

if (is_executable($file))
{
    echo $file.' is executable';
}
else
{
    echo $file.' is not executable';
}

Если я выполняю perl через терминал, он работает нормально, но когда я пытаюсь выполнить через PHP, он не работает.

@ Гордон Спасибо за вашу ссылку .. Тем не менее у меня та же проблема .. Suresh kumar
@ K102 Извините, я ... Я ошибочно набрал в этом посте .. Suresh kumar
Я решил эту проблему, отключив Safe_mode в php.ini Suresh kumar
менятьust вusr k102
Возможно, вам не разрешено совершать какие-либо системные вызовы с php из-за некоторых строгих настроек безопасности? Проверьте с помощью простой команды, какls или жеcwd, Если вы выполняете сценарий perl только из командной строки с помощью интерпретатора perl, вам не нужно устанавливать разрешение на выполнение.664 следует сделать. В противном случае он может быть выполнен из браузера, если сервер настроен таким образом. simbabque

Ваш Ответ

1   ответ
8

exec("/usr/bin/perl /full/path/to/Script.pl $username $password",$output);

С Уважением,

Я уже попробую это .. Не работает. Suresh kumar
PHP выполняется как пользователь apachewww-data, Ваш скрипт, вероятно, должен работать как sudo, но PHP этого не позволяет. По крайней мере дляdebiab, бежатьvisudo, а затем добавитьwww-data ALL=(ALL:ALL) NOPASSWD: /pat/to/your/script.pl, затем измените разрешение, чтобы только root мог редактировать файл (безопасность):sudo chown root:someuser /path/to/your/script.plи, наконец, сделать его исполняемымsudo chmod u+rwx /path/to/your/script.pl

Похожие вопросы