Tworzę połączenie z bazą danych MySQL w skrypcie Perla, wywoływanym przez skrypt PHP. Oto 2 skrypty:Nie można utworzyć połączenia MySQL za pośrednictwem języka Perl po wywołaniu w skrypcie PHP
Perl:
#!/usr/bin/perl
# script name = MyCode.pl
use DBI;
my $data_source = q/dbi:mysql:name:localhost/;
my $user = q/myname/;
my $pwd = q/pword/;
print "before...\n";
# Connect!
$dbhandle= DBI->connect($data_source,$user,$pwd) or die "can't connect
$data_source: $DBI::errstr \n";
print "...after \n";
PHP:
<?php
// script name = Test.php
$myResult=shell_exec("perl /path/MyCode.pl");
echo $myResult;
?>
Kiedy wykonywane w wierszu poleceń, test.php drukuje „przed .. . "i" ... after ", a połączenie DB jest rzeczywiście ustanowione w kodzie Perla. Jednak gdy Test.php jest wykonywany z mojej przeglądarki (Chrome), wszystko, co drukuje, jest "przed ..." i nie nawiązano połączenia. Wyświetlany jest komunikat o błędzie no.
Dlaczego w wierszu poleceń występuje sukces, ale nie pochodzi on z serwera WWW?
Dobre pytanie. Ciekawe, dlaczego zrobiłbyś to w ten sposób? –
Kiedy działa w wierszu poleceń, a nie w przeglądarce, zawsze najpierw idę do uprawnień. Czy twój serwer WWW (apache?) Ma pozwolenie na uruchamianie Perla i uprawnienia dostępu do/path/MyCode.pl? – kainaw
Mam procedurę "backend" napisaną w Perlu, która symuluje proces dla jednego z moich klientów biznesowych. Wszystko zmieniło się w miejscu, w którym potrzebowałem – MikeP