Ich erzeuge einen Hash in meiner Perl-Datei und wenn ich die Skript-Formular-Konsole ausführen, ist alles in Ordnung. Wenn ich das gleiche Skript über PHP laufen lasse, scheint mein Hash leer zu sein.PHP exec erkennt nicht PHP-Hash
In PHP:
exec("perl perl/test.pl", $output);
print_r($output);
In meiner Perl-Datei:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $filename = 'test.txt';
open(my $fh, '<:encoding(UTF-8)', $filename);
my %tc;
while (my $row = <$fh>) {
chomp $row;
if ($row =~ /someregex/) {
$tc{$1} = $2;
}
}
my $size = keys %tc;
print $size;
print Dumper(\%tc);
Wenn ich es in der Konsole laufen hat es eine Größe von 1 mit diesem Code Stück und der dumper zeigt den richtigen Inhalt. Wenn ich es in PHP ausdrucke, hat es eine Größe von 0 und gibt ein leeres Array zurück.
Die PHP führt das Perl-Skript aus, als würde ich nur ein paar einfache Daten zurückgeben, die PHP zeigt es.
Ich würde jede helfende Antwort schätzen. Vielen Dank!
Versuch ändern Sie den vollständigen Pfad zu 'perl/test.pl' –
Angabe tat du versuchst 'shell_exec' anstelle von' exec' zu verwenden? – Fky
Versuchen Sie, beim Ausführen des Skripts einen absoluten Pfad zu verwenden, und stellen Sie sicher, dass der Benutzer, über den das System PHP ausführt, über die richtigen Dateiberechtigungen verfügt. –