My OS is Ubuntu, 14.04, I have lampp. I want to execute a perl file from PHP through my browser. I simply use the exec function (in PHP) to do that and it works. I have seen similar questions in stackoverflow but they aren't related to this.
Example Perl File named test.pl:
#!usr/bin/perl
print "This is a perl file";
Example PHP File named test.php:
<?php
$perl=exec('perl test.pl',$out,$r); //Works successfully
print_r($out); //Outputs Array ( [0]=>This is a perl file )
?>
But I need to execute some other perl file. I can execute that successfully from the command line. Lets assume name of that file is: test2.pl
When command is given in command line as
perl test2.pl -u argument1 -m argument2 -p testresult
It takes a fraction of second to execute the above command. I get the output in command line.
But when I execute the same command from PHP as:
<?php
$perl=exec('perl test2.pl -u argument1 -m argument2 -p testresult',$out,$r);
print_r($out); //Outputs Array ( )
?>
My output is
Array
(
)
Now I am not getting the output, however the perl file is executing, but I am unable to get the output in $out
. I can assure you that the perl file was executed because it also makes some kind of file after execution.
I don't understand why its not giving me the output.
I have also tried following functions in php already:,
exec
system
shell_exec
None of them is giving me the output, they are working fine for test.pl but not for test2.pl (test.pl and test2.pl are mentioned above).
My objective is to get the output.
edit: Solved. Thanks to hrunting's answer.